使用 node-dev 和 Typescript 忽略 child_process fork 的文件扩展名

Ignore filename extension for child_process fork using node-dev and Typescript

我有一个用 Typescript 编写的项目,我在本地环境中使用 node-devts-node 进行开发。我正在使用 child_processfork 方法来实例化一个子进程,如下所示:

fork(path.join(__dirname, './worker.ts'));

这很好用,我什至可以在 VS Code 中为 worker 设置断点。

问题是在构建(转译)我的项目时,抛出了一个 MODULE_NOT_FOUND 异常,因为 worker.ts 变成了 worker.js。最初,我的想法是在分叉时省略文件扩展名(fork(path.join(__dirname, './worker'));),但是如果我这样做,当 运行 带有 node-dev 的项目时,它会抛出一个 MODULE_NOT_FOUND 因为如果扩展名不存在,它无法解析文件。

有什么解决方法吗?也许 node-dev 的额外配置选项?

我在 Windows 10 使用节点 v12.22.1

我建议的一个简单解决方案是读入当前文件类型。编译文件应以“.js”结尾,而源文件应以“.ts”结尾。使用 path.extname methode in combination with __filename 您可以轻松提取该文件扩展名并将其简单地连接到您的文件名。

fork(path.join(__dirname, './worker' + path.extname(__filename)));