npm run build > 在 NestJs 项目中没有创建 dist 文件夹

9

我试图使用命令npm run start:prod启动我的项目,但出现了以下错误:

Error: Cannot find module {path to my project}\dist\main.js'.

我已经尝试将我的项目中所有文件的路径从src/myController重命名为../myController

我的package.json文件(scripts部分)如下:

"scripts": {
    "build": "tsc -p tsconfig.build.json",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
    "start": "ts-node -r tsconfig-paths/register src/main.ts",
    "start:dev": "concurrently \"wait-on dist/main.js && nodemon\" \"tsc -w -p tsconfig.json\" ",
    "start:debug": "nodemon --config nodemon-debug.json",
    "prestart:prod": "rimraf dist && npm run build",
    "start:prod": "node dist/main.js"

我的tsconfig.json文件

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "noImplicitAny": false,
    "removeComments": true,
    "allowSyntheticDefaultImports": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es6",
    "sourceMap": true,
    "rootDir": ".",
    "outDir": "../dist",
    "baseUrl": "./src"
  },
  "include": [ "./src/**/*.ts", ],
  "exclude": ["node_modules", "dist", "src/**/*.spec.ts", "src/**/__test__/*"]
}
实际输出:

nest-typescript-starter@1.0.0 prestart:prod {我的项目路径} rimraf dist && npm run build

nest-typescript-starter@1.0.0 build {我的项目路径} tsc -p tsconfig.build.json

nest-typescript-starter@1.0.0 start:prod {我的项目路径} node dist/main.js

internal/modules/cjs/loader.js:584 throw err; ^

错误:无法找到模块 {我的项目路径}\dist\main.js'

2个回答

23

好的,我有点傻。答案很简单。在 package.json 文件中,你需要将以下这行代码从 "start:prod": "node dist/main.js" 改为 "start:prod": "node dist/src/main.js"。在 tsconfig.json 文件中,你需要将 "outDir": "../dist" 改为 "outDir": "./dist"


你可以接受自己的答案作为正确的解决方案,这样可以帮助其他人在未来知道要查看哪个回复。 - Jay McDoniel
1
这也帮了我。我相信在我的情况下,这是因为我从src之外的模式中生成类型。但是我不太喜欢看到整个dist/src,尽管这又是另一回事... - ciekawy
我曾经遇到过同样的问题,看起来NestJs在package.json中默认提供了以下内容:"start:prod": "node dist/main"将其更新为"start:prod": "node dist/src/main"解决了我的问题。 - Andy

1

您可以在package.json文件中的scripts下面添加一个新的命令:

"start:live": "rimraf dist && nest build && node dist/src/main", 

然后你可以运行:
npm run start:live

1
请考虑格式化您的代码:https://stackoverflow.com/help/formatting 这将使它更易读。 - ChristianB

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