我正在尝试用命令“npm run build”构建一个nuxtjs应用程序,它正在执行“nuxt build”。
但是,构建失败,看起来nuxt不知道如何编译Typescript代码。但有趣的是,“npm run dev”命令没有任何问题,应用程序正常工作。只是生产构建失败了。
我注意到,如果我从单个文件组件中的脚本标记中删除lang =“ts”,则错误消失,但当然,typescript代码无法编译,并且会发生其他错误。我尝试了各种tsconfig.json配置,但没有一个工作。我在package.json文件中的依赖项中包含typescript和ts-loader模块。
"ts-loader": "^5.3.3",
"typescript": "^3.3.3",
这是我运行“npm run build”时收到的错误消息的示例
ERROR in ./pages/index.vue?vue&type=script&lang=ts& (./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib??ref--0-2!./node_modules/ts-loader??ref--0-3!./node_modules/babel-loader/lib??ref--4-0!./node_modules/ts-loader??ref--4-1!./node_modules/vue-loader/lib??vue-loader-options!./pages/index.vue?vue&type=script&lang=ts&)
Module build failed (from ./node_modules/thread-loader/dist/cjs.js):
Thread Loader (Worker 4)
Cannot read property 'errors' of undefined
at successfulTypeScriptInstance (../node_modules/ts-loader/dist/instances.js:90:28)
at Object.getTypeScriptInstance (../node_modules/ts-loader/dist/instances.js:34:12)
at Object.loader (../node_modules/ts-loader/dist/index.js:17:41)
@ ./pages/index.vue?vue&type=script&lang=ts& 1:0-404 1:420-423 1:425-826 1:425-826
@ ./pages/index.vue
@ ./.nuxt/router.js
@ ./.nuxt/index.js
@ ./.nuxt/client.js
@ multi ./.nuxt/client.js
这是我的tsconfig.json
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"es2015"
],
"module": "es2015",
"moduleResolution": "node",
"experimentalDecorators": true,
"noImplicitAny": false,
"noImplicitThis": false,
"strictNullChecks": true,
"removeComments": true,
"suppressImplicitAnyIndexErrors": true,
"allowSyntheticDefaultImports": true,
"allowJs": true,
"baseUrl": ".",
"paths": {
"~/*": [
"./*"
]
},
"noUnusedLocals": true,
"resolveJsonModule": true,
"esModuleInterop": true
}
}
有没有人有任何想法如何使NuxtJs与Typescript一起用于生产构建而不仅仅用于开发?
谢谢
最终的解决方案(如@Aldarund)建议使用nuxt-ts,但没有任何其他打字稿模块,如typescript或nuxt-typescript。你甚至不需要ts-loader模块。并且nuxt.config.js必须重命名为nuxt.config.ts。
甚至没有提到你必须在你的npm脚本中使用nuxt-ts而不是普通的nuxt。
编辑2019年4月:从Nuxt.js的2.5.0版开始,打字稿支持不再需要nuxt-ts。 Nuxt.js通过安装@nuxt / typescript正式支持typescript。