如何将 Typescript 添加到 Nativescript-Vue 项目中?
How to add Typescript to a Nativescript-Vue project?
为了让 Typescript 在一个简单的模板生成的 Nativescript-Vue 项目中工作,我已经努力了几天。这是我所做的:
- 用他们的命令创建了项目:
vue 初始化 nativescript-vue/vue-cli-template typescript2
按照此处的说明操作:https://nativescript-vue.org/blog/using-typescript-in-nativescript-vue/
添加了一个 env.d.ts 文件,其内容为:
声明 var TNS_ENV: 字符串;
- 添加了一个 shims.vue.d.ts 文件,其内容为:
声明模块'*.vue'{
从 'vue' 导入 Vue
导出默认 Vue
}
- 添加了 .ts 扩展名以解析 webpack.config.js 中的扩展名。
- 在 webpack.config.js 中添加了以下规则。
{
测试:/\.ts$/,
排除:/node_modules|vue\/src/,
装载机:"ts-loader",
选项: {
appendTsSuffixTo: [/\.vue$/]
}
},
- 然后 运行使用以下命令启动应用程序:
tns 运行 android --捆绑包
这会导致以下错误:
ERROR in Entry module not found: Error: Can't resolve './main.js' in '/Data/dev/test/Nativescript/typescript2/app'
Webpack compilation complete. Watching for file changes.
Webpack build done!
Executing before-shouldPrepare hook from /Data/dev/test/Nativescript/typescript2/hooks/before-shouldPrepare/nativescript-dev-webpack.js
Preparing project...
Executing before-prepareJSApp hook from /Data/dev/test/Nativescript/typescript2/hooks/before-prepareJSApp/nativescript-dev-webpack.js
Project successfully prepared (Android)
Executing after-prepare hook from /Data/dev/test/Nativescript/typescript2/hooks/after-prepare/nativescript-dev-webpack.js
Building project...
Gradle build...
+ setting applicationId
+ applying user-defined configuration from /Data/dev/test/Nativescript/typescript2/app/App_Resources/Android/app.gradle
Using support library version 28.0.0
+ adding nativescript runtime package dependency: nativescript-optimized-with-inspector
+ adding aar plugin dependency: /Data/dev/test/Nativescript/typescript2/node_modules/nativescript-socket.io/platforms/android/nativescript_socket.io.aar
+ adding aar plugin dependency: /Data/dev/test/Nativescript/typescript2/node_modules/tns-core-modules-widgets/platforms/android/widgets-release.aar
(node:3079) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
java.io.FileNotFoundException: /Data/dev/test/Nativescript/typescript2/platforms/android/build-tools/sbg-bindings.txt (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at org.nativescript.staticbindinggenerator.Generator.getRows(Generator.java:145)
at org.nativescript.staticbindinggenerator.Generator.generateBindings(Generator.java:85)
at org.nativescript.staticbindinggenerator.Generator.writeBindings(Generator.java:63)
at org.nativescript.staticbindinggenerator.Main.main(Main.java:48)
Project successfully built.
Installing on device FA7A11A03046...
Successfully installed on device with identifier 'FA7A11A03046'.
Refreshing application on device FA7A11A03046...
System.err: java.lang.RuntimeException: Unable to create application com.tns.NativeScriptApplication: com.tns.NativeScriptException:
System.err:
System.err: Error calling module function
System.err:
System.err: Error: com.tns.NativeScriptException: Failed to find module: "./vendor", relative to: app/
System.err: com.tns.Module.resolvePathHelper(Module.java:146)
System.err: com.tns.Module.resolvePath(Module.java:55)
System.err: com.tns.Runtime.runModule(Native Method)
System.err: com.tns.Runtime.runModule(Runtime.java:553)
System.err: com.tns.Runtime.run(Runtime.java:545)
System.err: com.tns.NativeScriptApplication.onCreate(NativeScriptApplication.java:21)
System.err: android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
System.err: android.app.ActivityThread.handleBindApplication(ActivityThread.java:5882)
System.err: android.app.ActivityThread.access00(ActivityThread.java:200)
System.err: android.app.ActivityThread$H.handleMessage(ActivityThread.java:1651)
System.err: android.os.Handler.dispatchMessage(Handler.java:106)
System.err: android.os.Looper.loop(Looper.java:193)
System.err: android.app.ActivityThread.main(ActivityThread.java:6680)
System.err: java.lang.reflect.Method.invoke(Native Method)
System.err: com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
System.err: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
System.err: File: "<unknown>, line: 1, column: 265
System.err:
System.err: StackTrace:
System.err: Frame: function:'require', file:'', line: 1, column: 266
System.err: Frame: function:'', file:'file:///data/data/org.nativescript.application/files/app/starter.js', line: 1, column: 61
System.err: Frame: function:'require', file:'', line: 1, column: 266
System.err:
System.err:
System.err: Error: com.tns.NativeScriptException: Failed to find module: "./vendor", relative to: app/
System.err: com.tns.Module.resolvePathHelper(Module.java:146)
System.err: com.tns.Module.resolvePath(Module.java:55)
System.err: com.tns.Runtime.runModule(Native Method)
System.err: com.tns.Runtime.runModule(Runtime.java:553)
System.err: com.tns.Runtime.run(Runtime.java:545)
System.err: com.tns.NativeScriptApplication.onCreate(NativeScriptApplication.java:21)
System.err: android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
System.err: android.app.ActivityThread.handleBindApplication(ActivityThread.java:5882)
System.err: android.app.ActivityThread.access00(ActivityThread.java:200)
System.err: android.app.ActivityThread$H.handleMessage(ActivityThread.java:1651)
System.err: android.os.Handler.dispatchMessage(Handler.java:106)
System.err: android.os.Looper.loop(Looper.java:193)
System.err: android.app.ActivityThread.main(ActivityThread.java:6680)
System.err: java.lang.reflect.Method.invoke(Native Method)
System.err: com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
System.err: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
System.err: File: "<unknown>, line: 1, column: 265
System.err:
System.err: StackTrace:
System.err: Frame: function:'require', file:'', line: 1, column: 266
System.err: Frame: function:'', file:'file:///data/data/org.nativescript.application/files/app/starter.js', line: 1, column: 61
System.err: Frame: function:'require', file:'', line: 1, column: 266
System.err:
System.err: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5887)
System.err: at android.app.ActivityThread.access00(ActivityThread.java:200)
System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1651)
System.err: at android.os.Handler.dispatchMessage(Handler.java:106)
System.err: at android.os.Looper.loop(Looper.java:193)
System.err: at android.app.ActivityThread.main(ActivityThread.java:6680)
System.err: at java.lang.reflect.Method.invoke(Native Method)
System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
System.err: Caused by: com.tns.NativeScriptException:
System.err:
System.err: Error calling module function
System.err:
System.err: Error: com.tns.NativeScriptException: Failed to find module: "./vendor", relative to: app/
System.err: com.tns.Module.resolvePathHelper(Module.java:146)
System.err: com.tns.Module.resolvePath(Module.java:55)
System.err: com.tns.Runtime.runModule(Native Method)
System.err: com.tns.Runtime.runModule(Runtime.java:553)
System.err: com.tns.Runtime.run(Runtime.java:545)
System.err: com.tns.NativeScriptApplication.onCreate(NativeScriptApplication.java:21)
System.err: android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
System.err: android.app.ActivityThread.handleBindApplication(ActivityThread.java:5882)
System.err: android.app.ActivityThread.access00(ActivityThread.java:200)
System.err: android.app.ActivityThread$H.handleMessage(ActivityThread.java:1651)
System.err: android.os.Handler.dispatchMessage(Handler.java:106)
System.err: android.os.Looper.loop(Looper.java:193)
System.err: android.app.ActivityThread.main(ActivityThread.java:6680)
System.err: java.lang.reflect.Method.invoke(Native Method)
System.err: com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
System.err: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
System.err: File: "<unknown>, line: 1, column: 265
System.err:
System.err: StackTrace:
System.err: Frame: function:'require', file:'', line: 1, column: 266
System.err: Frame: function:'', file:'file:///data/data/org.nativescript.application/files/app/starter.js', line: 1, column: 61
System.err: Frame: function:'require', file:'', line: 1, column: 266
System.err:
System.err:
System.err: Error: com.tns.NativeScriptException: Failed to find module: "./vendor", relative to: app/
System.err: com.tns.Module.resolvePathHelper(Module.java:146)
System.err: com.tns.Module.resolvePath(Module.java:55)
System.err: com.tns.Runtime.runModule(Native Method)
System.err: com.tns.Runtime.runModule(Runtime.java:553)
System.err: com.tns.Runtime.run(Runtime.java:545)
System.err: com.tns.NativeScriptApplication.onCreate(NativeScriptApplication.java:21)
System.err: android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
System.err: android.app.ActivityThread.handleBindApplication(ActivityThread.java:5882)
System.err: android.app.ActivityThread.access00(ActivityThread.java:200)
System.err: android.app.ActivityThread$H.handleMessage(ActivityThread.java:1651)
System.err: android.os.Handler.dispatchMessage(Handler.java:106)
System.err: android.os.Looper.loop(Looper.java:193)
System.err: android.app.ActivityThread.main(ActivityThread.java:6680)
System.err: java.lang.reflect.Method.invoke(Native Method)
System.err: com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
System.err: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
System.err: File: "<unknown>, line: 1, column: 265
System.err:
System.err: StackTrace:
System.err: Frame: function:'require', file:'', line: 1, column: 266
System.err: Frame: function:'', file:'file:///data/data/org.nativescript.application/files/app/starter.js', line: 1, column: 61
System.err: Frame: function:'require', file:'', line: 1, column: 266
System.err:
System.err: at com.tns.Runtime.runModule(Native Method)
System.err: at com.tns.Runtime.runModule(Runtime.java:553)
System.err: at com.tns.Runtime.run(Runtime.java:545)
System.err: at com.tns.NativeScriptApplication.onCreate(NativeScriptApplication.java:21)
System.err: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
System.err: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5882)
System.err: ... 8 more
Successfully synced application org.nativescript.application on device FA7A11A03046.
^[[A^CExecuting after-watch hook from /Data/dev/test/Nativescript/typescript2/hooks/after-watch/nativescript-dev-webpack.js
Stopping webpack watch
Executing after-watch hook from /Data/dev/test/Nativescript/typescript2/hooks/after-watch/nativescript-dev-webpack.js
Stopping webpack watch
有什么我遗漏的吗?我很想在我即将开始的 Nativescript-Vue 项目中享受 Typescript 的好处。
这适用于以下版本:
Nativescript CLI: 5.0.3
Nativescript-Vue: 2.0.2
Webpack: 4.27.1
更新:快速说明,在步骤 1 中创建应用程序时,我选择了简单模板,安装了 VueX,并安装了 Vue-Devtools。
更新(2019 年 1 月 30 日):好消息 - 我认为他们正在使用此 [=37] 中的模板添加对 Typescript 的开箱即用支持=].
所以从现在开始,我们应该可以在使用模板引导项目时选择 Typescript
作为语言选项。
我遇到了同样的问题,这是我将 TypeScript 添加到我的 Nativescript-Vue 项目的方法。 (我没有足够的声誉来添加评论所以我必须 post 这个作为答案)
- Create the project 和
vue init nativescript-vue/vue-cli-template <project-name>
- 在项目创建过程中出现关于
webpack.config.js
的警告,我被要求 运行 ./node_modules/.bin/update-ns-webpack --configs
- Vue Devtools does not work with
tns preview
所以我也禁用了它
- 添加以下内容:
- 安装
typescript
和 vue
作为 devDependencies
- 将
app/main.js
重命名为 app/main.ts
- 在
app/main.ts
中,将import App from './components/App'
更改为import App from './components/App.vue'
- 添加
tsconfig.json
(从 this stater project 复制并注释掉 "strict": true,
)
- 在
webpack.config.js
中,在 alias
下添加 'vue$': 'nativescript-vue'
并在 module.rules
下添加 exclude: /node_modules|vue\/src/,
(到 ts
- details here)
- 正如您在第 3 步和第 4 步中提到的,我还在
types/
文件夹下相应地创建了 env.d.ts
和 shims.vue.d.ts
(请注意,在 tsconfig.json
我复制的文件,它定义了 "typeRoots": ["types"]
)
- 我用
tns preview --bundle
测试过
- 该应用程序 运行 在我的 android phone 上运行良好(没有错误,可以在 phone 上看到更改)
- 如有必要,我可以测试它是否适用于命令
tns run android --bundle
希望以上内容对您有所帮助。
版本
使用的版本如下:
- 本机脚本 CLI:5.1.0
- nativescript-vue: 2.0.2
- 网络包:4.28.3
参考
- 这是我为将 TypeScript 添加到项目所做的 git commit。
- official blog post about adding TypeScript to nativescript-vue - 这非常有帮助,但不幸的是,在执行这些步骤后它并没有立即起作用(可能是因为我使用了不同的 vue-init 模板)
- 当然要感谢这个堆栈溢出问题中列出的详细步骤,这些步骤为我提供了修复项目的方向:-)
现在还有一个用于 Nativescript-Vue 的 Vue CLI 3 plugin,它将在 Javascript 或 Typescript 中构建整个项目,然后利用 Vue CLI 3 基础架构来帮助您。免责声明:我是插件当前状态的主要贡献者。
它还包括在 Web 和本机项目之间共享代码的能力,或者您可以只处理一个纯本机项目。
您可以利用 CLI 3 UI 经验或使用终端。无论哪种方式,您都可以执行以下操作:
- 创建一个新的 Vue 项目并确保选择 Typescript。在终端中,这将是
vue create my-app
,然后在提示中,选择 Typescript。
- 如果您在终端中,请确保切换到项目目录。如果你在UI,那么这个就没有必要了。
- 将插件添加到项目中。在终端中,这将是
vue add vue-cli-plugin-nativescript-vue
.
如果您喜欢开箱即用的 nativescript 导航器(路由器)、vuex、typescript/eslint、更漂亮且使用面向模块的方法结构化的模板(https://mnapoli.fr/organizing-code-into-domain-modules/) for easy maintenance as your app grows, you may clone our open-source project: https://github.com/Lyduz/nitibo
为了让 Typescript 在一个简单的模板生成的 Nativescript-Vue 项目中工作,我已经努力了几天。这是我所做的:
- 用他们的命令创建了项目:
vue 初始化 nativescript-vue/vue-cli-template typescript2
按照此处的说明操作:https://nativescript-vue.org/blog/using-typescript-in-nativescript-vue/
添加了一个 env.d.ts 文件,其内容为:
声明 var TNS_ENV: 字符串;
- 添加了一个 shims.vue.d.ts 文件,其内容为:
声明模块'*.vue'{ 从 'vue' 导入 Vue 导出默认 Vue }
- 添加了 .ts 扩展名以解析 webpack.config.js 中的扩展名。
- 在 webpack.config.js 中添加了以下规则。
{ 测试:/\.ts$/, 排除:/node_modules|vue\/src/, 装载机:"ts-loader", 选项: { appendTsSuffixTo: [/\.vue$/] } },
- 然后 运行使用以下命令启动应用程序:
tns 运行 android --捆绑包
这会导致以下错误:
ERROR in Entry module not found: Error: Can't resolve './main.js' in '/Data/dev/test/Nativescript/typescript2/app'
Webpack compilation complete. Watching for file changes.
Webpack build done!
Executing before-shouldPrepare hook from /Data/dev/test/Nativescript/typescript2/hooks/before-shouldPrepare/nativescript-dev-webpack.js
Preparing project...
Executing before-prepareJSApp hook from /Data/dev/test/Nativescript/typescript2/hooks/before-prepareJSApp/nativescript-dev-webpack.js
Project successfully prepared (Android)
Executing after-prepare hook from /Data/dev/test/Nativescript/typescript2/hooks/after-prepare/nativescript-dev-webpack.js
Building project...
Gradle build...
+ setting applicationId
+ applying user-defined configuration from /Data/dev/test/Nativescript/typescript2/app/App_Resources/Android/app.gradle
Using support library version 28.0.0
+ adding nativescript runtime package dependency: nativescript-optimized-with-inspector
+ adding aar plugin dependency: /Data/dev/test/Nativescript/typescript2/node_modules/nativescript-socket.io/platforms/android/nativescript_socket.io.aar
+ adding aar plugin dependency: /Data/dev/test/Nativescript/typescript2/node_modules/tns-core-modules-widgets/platforms/android/widgets-release.aar
(node:3079) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
java.io.FileNotFoundException: /Data/dev/test/Nativescript/typescript2/platforms/android/build-tools/sbg-bindings.txt (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at org.nativescript.staticbindinggenerator.Generator.getRows(Generator.java:145)
at org.nativescript.staticbindinggenerator.Generator.generateBindings(Generator.java:85)
at org.nativescript.staticbindinggenerator.Generator.writeBindings(Generator.java:63)
at org.nativescript.staticbindinggenerator.Main.main(Main.java:48)
Project successfully built.
Installing on device FA7A11A03046...
Successfully installed on device with identifier 'FA7A11A03046'.
Refreshing application on device FA7A11A03046...
System.err: java.lang.RuntimeException: Unable to create application com.tns.NativeScriptApplication: com.tns.NativeScriptException:
System.err:
System.err: Error calling module function
System.err:
System.err: Error: com.tns.NativeScriptException: Failed to find module: "./vendor", relative to: app/
System.err: com.tns.Module.resolvePathHelper(Module.java:146)
System.err: com.tns.Module.resolvePath(Module.java:55)
System.err: com.tns.Runtime.runModule(Native Method)
System.err: com.tns.Runtime.runModule(Runtime.java:553)
System.err: com.tns.Runtime.run(Runtime.java:545)
System.err: com.tns.NativeScriptApplication.onCreate(NativeScriptApplication.java:21)
System.err: android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
System.err: android.app.ActivityThread.handleBindApplication(ActivityThread.java:5882)
System.err: android.app.ActivityThread.access00(ActivityThread.java:200)
System.err: android.app.ActivityThread$H.handleMessage(ActivityThread.java:1651)
System.err: android.os.Handler.dispatchMessage(Handler.java:106)
System.err: android.os.Looper.loop(Looper.java:193)
System.err: android.app.ActivityThread.main(ActivityThread.java:6680)
System.err: java.lang.reflect.Method.invoke(Native Method)
System.err: com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
System.err: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
System.err: File: "<unknown>, line: 1, column: 265
System.err:
System.err: StackTrace:
System.err: Frame: function:'require', file:'', line: 1, column: 266
System.err: Frame: function:'', file:'file:///data/data/org.nativescript.application/files/app/starter.js', line: 1, column: 61
System.err: Frame: function:'require', file:'', line: 1, column: 266
System.err:
System.err:
System.err: Error: com.tns.NativeScriptException: Failed to find module: "./vendor", relative to: app/
System.err: com.tns.Module.resolvePathHelper(Module.java:146)
System.err: com.tns.Module.resolvePath(Module.java:55)
System.err: com.tns.Runtime.runModule(Native Method)
System.err: com.tns.Runtime.runModule(Runtime.java:553)
System.err: com.tns.Runtime.run(Runtime.java:545)
System.err: com.tns.NativeScriptApplication.onCreate(NativeScriptApplication.java:21)
System.err: android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
System.err: android.app.ActivityThread.handleBindApplication(ActivityThread.java:5882)
System.err: android.app.ActivityThread.access00(ActivityThread.java:200)
System.err: android.app.ActivityThread$H.handleMessage(ActivityThread.java:1651)
System.err: android.os.Handler.dispatchMessage(Handler.java:106)
System.err: android.os.Looper.loop(Looper.java:193)
System.err: android.app.ActivityThread.main(ActivityThread.java:6680)
System.err: java.lang.reflect.Method.invoke(Native Method)
System.err: com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
System.err: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
System.err: File: "<unknown>, line: 1, column: 265
System.err:
System.err: StackTrace:
System.err: Frame: function:'require', file:'', line: 1, column: 266
System.err: Frame: function:'', file:'file:///data/data/org.nativescript.application/files/app/starter.js', line: 1, column: 61
System.err: Frame: function:'require', file:'', line: 1, column: 266
System.err:
System.err: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5887)
System.err: at android.app.ActivityThread.access00(ActivityThread.java:200)
System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1651)
System.err: at android.os.Handler.dispatchMessage(Handler.java:106)
System.err: at android.os.Looper.loop(Looper.java:193)
System.err: at android.app.ActivityThread.main(ActivityThread.java:6680)
System.err: at java.lang.reflect.Method.invoke(Native Method)
System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
System.err: Caused by: com.tns.NativeScriptException:
System.err:
System.err: Error calling module function
System.err:
System.err: Error: com.tns.NativeScriptException: Failed to find module: "./vendor", relative to: app/
System.err: com.tns.Module.resolvePathHelper(Module.java:146)
System.err: com.tns.Module.resolvePath(Module.java:55)
System.err: com.tns.Runtime.runModule(Native Method)
System.err: com.tns.Runtime.runModule(Runtime.java:553)
System.err: com.tns.Runtime.run(Runtime.java:545)
System.err: com.tns.NativeScriptApplication.onCreate(NativeScriptApplication.java:21)
System.err: android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
System.err: android.app.ActivityThread.handleBindApplication(ActivityThread.java:5882)
System.err: android.app.ActivityThread.access00(ActivityThread.java:200)
System.err: android.app.ActivityThread$H.handleMessage(ActivityThread.java:1651)
System.err: android.os.Handler.dispatchMessage(Handler.java:106)
System.err: android.os.Looper.loop(Looper.java:193)
System.err: android.app.ActivityThread.main(ActivityThread.java:6680)
System.err: java.lang.reflect.Method.invoke(Native Method)
System.err: com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
System.err: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
System.err: File: "<unknown>, line: 1, column: 265
System.err:
System.err: StackTrace:
System.err: Frame: function:'require', file:'', line: 1, column: 266
System.err: Frame: function:'', file:'file:///data/data/org.nativescript.application/files/app/starter.js', line: 1, column: 61
System.err: Frame: function:'require', file:'', line: 1, column: 266
System.err:
System.err:
System.err: Error: com.tns.NativeScriptException: Failed to find module: "./vendor", relative to: app/
System.err: com.tns.Module.resolvePathHelper(Module.java:146)
System.err: com.tns.Module.resolvePath(Module.java:55)
System.err: com.tns.Runtime.runModule(Native Method)
System.err: com.tns.Runtime.runModule(Runtime.java:553)
System.err: com.tns.Runtime.run(Runtime.java:545)
System.err: com.tns.NativeScriptApplication.onCreate(NativeScriptApplication.java:21)
System.err: android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
System.err: android.app.ActivityThread.handleBindApplication(ActivityThread.java:5882)
System.err: android.app.ActivityThread.access00(ActivityThread.java:200)
System.err: android.app.ActivityThread$H.handleMessage(ActivityThread.java:1651)
System.err: android.os.Handler.dispatchMessage(Handler.java:106)
System.err: android.os.Looper.loop(Looper.java:193)
System.err: android.app.ActivityThread.main(ActivityThread.java:6680)
System.err: java.lang.reflect.Method.invoke(Native Method)
System.err: com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
System.err: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
System.err: File: "<unknown>, line: 1, column: 265
System.err:
System.err: StackTrace:
System.err: Frame: function:'require', file:'', line: 1, column: 266
System.err: Frame: function:'', file:'file:///data/data/org.nativescript.application/files/app/starter.js', line: 1, column: 61
System.err: Frame: function:'require', file:'', line: 1, column: 266
System.err:
System.err: at com.tns.Runtime.runModule(Native Method)
System.err: at com.tns.Runtime.runModule(Runtime.java:553)
System.err: at com.tns.Runtime.run(Runtime.java:545)
System.err: at com.tns.NativeScriptApplication.onCreate(NativeScriptApplication.java:21)
System.err: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
System.err: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5882)
System.err: ... 8 more
Successfully synced application org.nativescript.application on device FA7A11A03046.
^[[A^CExecuting after-watch hook from /Data/dev/test/Nativescript/typescript2/hooks/after-watch/nativescript-dev-webpack.js
Stopping webpack watch
Executing after-watch hook from /Data/dev/test/Nativescript/typescript2/hooks/after-watch/nativescript-dev-webpack.js
Stopping webpack watch
有什么我遗漏的吗?我很想在我即将开始的 Nativescript-Vue 项目中享受 Typescript 的好处。
这适用于以下版本:
Nativescript CLI: 5.0.3
Nativescript-Vue: 2.0.2
Webpack: 4.27.1
更新:快速说明,在步骤 1 中创建应用程序时,我选择了简单模板,安装了 VueX,并安装了 Vue-Devtools。
更新(2019 年 1 月 30 日):好消息 - 我认为他们正在使用此 [=37] 中的模板添加对 Typescript 的开箱即用支持=].
所以从现在开始,我们应该可以在使用模板引导项目时选择 Typescript
作为语言选项。
我遇到了同样的问题,这是我将 TypeScript 添加到我的 Nativescript-Vue 项目的方法。 (我没有足够的声誉来添加评论所以我必须 post 这个作为答案)
- Create the project 和
vue init nativescript-vue/vue-cli-template <project-name>
- 在项目创建过程中出现关于
webpack.config.js
的警告,我被要求 运行./node_modules/.bin/update-ns-webpack --configs
- Vue Devtools does not work with
tns preview
所以我也禁用了它
- 在项目创建过程中出现关于
- 添加以下内容:
- 安装
typescript
和vue
作为 devDependencies - 将
app/main.js
重命名为app/main.ts
- 在
app/main.ts
中,将import App from './components/App'
更改为import App from './components/App.vue'
- 添加
tsconfig.json
(从 this stater project 复制并注释掉"strict": true,
) - 在
webpack.config.js
中,在alias
下添加'vue$': 'nativescript-vue'
并在module.rules
下添加exclude: /node_modules|vue\/src/,
(到ts
- details here) - 正如您在第 3 步和第 4 步中提到的,我还在
types/
文件夹下相应地创建了env.d.ts
和shims.vue.d.ts
(请注意,在tsconfig.json
我复制的文件,它定义了"typeRoots": ["types"]
)
- 安装
- 我用
tns preview --bundle
测试过- 该应用程序 运行 在我的 android phone 上运行良好(没有错误,可以在 phone 上看到更改)
- 如有必要,我可以测试它是否适用于命令
tns run android --bundle
希望以上内容对您有所帮助。
版本
使用的版本如下:
- 本机脚本 CLI:5.1.0
- nativescript-vue: 2.0.2
- 网络包:4.28.3
参考
- 这是我为将 TypeScript 添加到项目所做的 git commit。
- official blog post about adding TypeScript to nativescript-vue - 这非常有帮助,但不幸的是,在执行这些步骤后它并没有立即起作用(可能是因为我使用了不同的 vue-init 模板)
- 当然要感谢这个堆栈溢出问题中列出的详细步骤,这些步骤为我提供了修复项目的方向:-)
现在还有一个用于 Nativescript-Vue 的 Vue CLI 3 plugin,它将在 Javascript 或 Typescript 中构建整个项目,然后利用 Vue CLI 3 基础架构来帮助您。免责声明:我是插件当前状态的主要贡献者。
它还包括在 Web 和本机项目之间共享代码的能力,或者您可以只处理一个纯本机项目。
您可以利用 CLI 3 UI 经验或使用终端。无论哪种方式,您都可以执行以下操作:
- 创建一个新的 Vue 项目并确保选择 Typescript。在终端中,这将是
vue create my-app
,然后在提示中,选择 Typescript。 - 如果您在终端中,请确保切换到项目目录。如果你在UI,那么这个就没有必要了。
- 将插件添加到项目中。在终端中,这将是
vue add vue-cli-plugin-nativescript-vue
.
如果您喜欢开箱即用的 nativescript 导航器(路由器)、vuex、typescript/eslint、更漂亮且使用面向模块的方法结构化的模板(https://mnapoli.fr/organizing-code-into-domain-modules/) for easy maintenance as your app grows, you may clone our open-source project: https://github.com/Lyduz/nitibo