在生产环境中构建&运行 时找不到模块'./static'

Cannot find module './static' when build&run in production env

我正在尝试在生产环境中构建 运行 Forge-RCDB project。我通过以下命令在 Windows Powershell 上工作:

npm run build-prod
$env:NODE_ENV ="production"
npm start

但是在 npm start

之后我得到了以下错误
> node bin/start.js

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

Error: Cannot find module './static'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
    at Function.Module._load (internal/modules/cjs/loader.js:507:25)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (C:\Users\dyang\Documents\forge-rcdb.nodejs\bin\start.js:15:3)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! forge-rcdb@4.0.0 start: `node bin/start.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the forge-rcdb@4.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

我试过了 npm install node-static 但错误仍然相同。有人可以帮我弄这个吗? ./static 有什么用?

这里的

./static指的是bin/static,是前端用npm run build-prod构建后发出的地方。您 运行 犯的错误不是因为缺少 node-static 或任何特定的相关性。

检查 运行 npm run build-prod 时的控制台输出,并验证之后是否正确生成了 bin/static 目录,其中包含内置的 emits。根据您的发现在下方编辑您的问题或评论,我将相应地更新我的答案。

编辑: 测试了我自己,是的,原来的 运行 生产脚本错过了 npm run build-server 位。将提出 PR 来解决此问题。

因此在生产中 运行 的正确命令是:

npm run build-server && npm run build-prod && NODE_ENV=production npm start

并确保在开始之前按照 config/production.config.js

中的要求设置所有环境变量

使用 npm run build-server 而不是 npm run build-prod 可以解决问题。不确定其他潜在影响。