TS 节点:找不到源文件

Posted

技术标签:

【中文标题】TS 节点:找不到源文件【英文标题】:TS-Node: Could not find sourceFile 【发布时间】:2019-11-07 18:07:47 【问题描述】:

我的项目一直在使用 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)。什么样的情况会产生这种错误?我什至尝试过使用includes 以确保覆盖正在导入的文件。单独运行 TypeScript 编译器就可以了。

../../node_modules/.bin/tsc --project tsconfig.json

【问题讨论】:

我今天遇到了类似的问题(ts-node 与Could not find sourceFile 结合使用)更改导入的顺序有帮助。不确定类似的东西是否对您有帮助。 【参考方案1】:

我感觉这与循环依赖有关。尤其是@Brenne 的回答说:

更改导入的顺序很有帮助。

根据我的经验,这些莫名其妙的错误总是倾向于循环依赖。

我只熟悉webpack plugin to detect these。但是,您可以尝试删除 require 并查看它是否正确构建。从那里,从'./v1/route/Routes' 文件中删除其他需要/导入的部分,以查看是否有任何部分导致循环 dep

【讨论】:

【参考方案2】:

我对 tsc 不熟悉,因为我总是将 babel 与 webpack 一起使用,但我认为如果你想将 js 编译为 ts,则需要启用 allowJs 选项。

【讨论】:

以上是关于TS 节点:找不到源文件的主要内容,如果未能解决你的问题,请参考以下文章

Typescript Nodejs Dockerfile:错误 TS5057:在指定目录中找不到 tsconfig.json 文件:“。”

Visual Studio 找不到 Firebase 节点模块

ts + webpack 捆绑节点找不到模块“路径”

打字稿导入文本文件“错误 TS2307:找不到模块”

打字稿找不到 .d.ts 文件

mocha 和 ts-node 找不到本地 .d.ts 文件