更改Nestjs中的dist目录

19

我正在基于Nestjs构建一个API。 main.ts 文件嵌套在我的 src 目录的子文件夹中。因此,编译后的文件也位于 dist 目录中,并且我的入口点是 dist/api/main.js 而不是 dist/main.js。我希望保持这种方式。

使用 npm run start:dev 启动应用程序时,我收到以下错误:

4:47:32 PM - Found 0 errors. Watching for file changes.
internal/modules/cjs/loader.js:969
    throw err;
    ^

Error: Cannot find module '/home/ymonb/Nest.js/myProject/dist/main'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:966:17)
    at Function.Module._load (internal/modules/cjs/loader.js:859:27)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

我需要能够使用新路径重新配置 Nest。我查看了文档,但我没有发现任何指定不同入口点的内容。

我想也许我需要编辑nest-cli.json文件,但我找不到关于此文件中可能选项的任何文档(如果您知道这样的文档,请告诉我!)。

这是我的nest-cli.json文件:

{
  "collection": "@nestjs/schematics",
  "sourceRoot": "src/api"
}

有任何思路吗?


你解决了这个问题吗? - vlio20
3个回答

24
您可以像这样编辑 nest-cli.json:
{
  "collection": "@nestjs/schematics",
  "sourceRoot": "src",
  "entryFile": "your/main/js/path"
}

同时nest-cli将会加载:your/main/js/path.js

我在源代码中发现了配置信息。nest-cli/lib/configuration/configuration.ts


5

打开你的 "nest-cli.json" 并编辑 "entryFile" 配置项。
它应该链接到 "dist/main" 文件夹内的 main.js 文件。
配置应该看起来像这样:

{
  "collection": "@nestjs/schematics",
  "sourceRoot": "src",
  "entryFile": "copy the relative path of your main.js and paste it here"
}

0
这些是 TypeScript 的构建配置。 在 tsconfig.json 文件中更改 rootDir 条目为 src。 这样做将会复制 src 下的结构到 dist 中。

谢谢,我尝试了但是没有成功。我不确定它是否与Typescript有关,因为编译工作正常。实际上,npm run build 运行得很好。问题似乎是Nest在dist目录中找不到文件。这就是为什么我认为Nest的配置是错误的,而不是Typescript。我在Github上放了一些代码来重现这个问题。只需运行 npm installnpm run start:dev 即可。 - Heinz Reser
确保 tsconfig.json 中的 outDir 指向 dist 而不是 dist/api,并且在 nest-cli.json 中将 "sourceRoot": "src/api" 改为 "sourceRoot": "src"。尝试一下这些修改。 - Naor Levi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接