我的项目一直在使用ts-node
来同时运行JavaScript和TypeScript。最近它停止工作,没有明显的原因。在最简单的层次上,这是它的运行方式及其产生的错误:
$ TS_NODE_PROJECT=./tsconfig.json ../../node_modules/.bin/ts-node app.js MSTR-1513
INFO | Arrow/1.6.0
No deployment manifest found
Uncaught Exception Could not find sourceFile: '/Users/jonah/Projects/myapp/server/src/v1/route/Routes.ts' in [].
Error: Could not find sourceFile: '/Users/jonah/Projects/myapp/server/src/v1/route/Routes.ts' in [].
at getValidSourceFile (/Users/jonah/Projects/myapp/node_modules/typescript/lib/typescript.js:122211:23)
at Object.getEmitOutput (/Users/jonah/Projects/myapp/node_modules/typescript/lib/typescript.js:122580:30)
at getOutput (/Users/jonah/Projects/myapp/node_modules/ts-node/src/index.ts:354:30)
at Object.compile (/Users/jonah/Projects/myapp/node_modules/ts-node/src/index.ts:395:32)
at Module.m._compile (/Users/jonah/Projects/myapp/node_modules/ts-node/src/index.ts:473:43)
at Module._extensions..js (module.js:663:10)
at Object.require.extensions.(anonymous function) [as .ts] (/Users/jonah/Projects/myapp/node_modules/ts-node/src/index.ts:476:12)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
app.js
的摘录:
const Routes = require('./v1/route/Routes').default;
server.app.use('/v1', new Routes().router);
我对错误的这一部分感到非常困惑:Could not find sourceFile: '/Users/jonah/Projects/myapp/server/src/v1/route/Routes.ts'
。我可以将确切的路径粘贴到终端中,然后查看文件确实存在。这是tsconfig.json
:
{
"compileOnSave": true,
"compilerOptions": {
"allowJs": false,
"removeComments": true,
"noImplicitAny" : false,
"module": "commonjs",
"target": "es2017",
"sourceMap": true,
"watch": false,
"types": ["mocha"],
"forceConsistentCasingInFileNames": false
},
"include": [
"./v1/**/*.ts",
"../test/v1/**/*.ts"
],
"exclude": [
"../../node_modules"
]
}
当前正在运行最新的TypeScript(3.5.2)和ts-node(8.3.0)。哪种类型的情况可能会产生这种错误?我什至尝试弄乱include
来确保覆盖了要导入的文件。单独运行TypeScript编译器就可以了。
../../node_modules/.bin/tsc --project tsconfig.json
答案 0 :(得分:0)
我不熟悉tsc,因为我总是将babel与webpack一起使用,但是我认为如果要将js编译为ts,则需要启用allowJs
选项。
答案 1 :(得分:0)
我觉得这与循环依赖有关。特别是@Brenne 的回答说:
<块引用>更改导入顺序有帮助。
根据我的经验,这些莫名其妙的错误往往是循环依赖。
我只熟悉 webpack plugin to detect these。但是,您可以尝试删除 require 并查看它是否正确构建。从那里,从 './v1/route/Routes'
文件中删除其他需要/导入的部分,以查看是否有任何导致循环 dep