繁体   English   中英

Node 应用程序在生产中抛出错误,但在具有相同包的开发中却没有?

[英]Node app is throwing error in production but not in dev with same package?

我正在尝试将我的第一个节点应用程序部署到共享托管平台中的生产服务器,但是每当我运行启动脚本时,我都会收到以下错误消息:

返回码:1 标准输出:

thechoicebox-backend@1.0.0 dev /home/ftijpnql/tcb

node server.js --scripts-prepend-node-path stderr: npm WARN Lifecycle 用于脚本的节点二进制文件是

/home/ftijpnql/nodevenv/tcb/14/bin/node 但 npm 正在使用 /opt/alt/alt-nodejs14/root/usr/bin/node 本身。 使用--scripts-prepend-node-path选项包含执行节点二进制 npm 的路径。 内部/模块/cjs/loader.js:905
抛出错误; ^

错误:找不到模块 '/home/ftijpnql/nodevenv/tcb/14/lib/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node' 需要堆栈:

  • /home/ftijpnql/nodevenv/tcb/14/lib/node_modules/bcrypt/bcrypt.js
  • /home/ftijpnql/tcb/src/controller/admin-auth.controller.js
  • /home/ftijpnql/tcb/src/app.js
  • /home/ftijpnql/tcb/server.js 在 Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15) 在 Function.Module._load (internal/modules/cjs/loader.js:746: 27) 在 Module.require (internal/modules/cjs/loader.js:974:19) 在 require (internal/modules/cjs/helpers.js:92:18) 在 Object。 (/home/ftijpnql/nodevenv/tcb/14/lib/node_modules/bcrypt/bcrypt.js:6:16) 在 Object.Module 的 Module._compile (internal/modules/cjs/loader.js:1085:14)。 _extensions..js (internal/modules/cjs/loader.js:1114:10) 在 Module.load (internal/modules/cjs/loader.js:950:32) 在 Function.Module._load (internal/modules/cjs) /loader.js:790:14) 在 Module.require (internal/modules/cjs/loader.js:974:19) { 代码:'MODULE_NOT_FOUND',requireStack:['/home/ftijpnql/nodevenv/tcb/14/ lib/node_modules/bcrypt/bcrypt.js', '/home/ftijpnql/tcb/src/controller/admin-auth.controller.js', '/home/ftijpnql/tcb/src/app.js', '/home /ftijpnql/tcb/server.js' ] } npm ERR! 代码 ELIFECYCLE npm ERR! 错误号 1 npm 错误号! thechoicebox-backend@1.0.0 dev: node server.js --scripts-prepend-node-path npm ERR! 退出状态 1 npm ERR! 错误! 在 thechoicebox-backend@1.0.0 开发脚本中失败。 错误! 这可能不是 npm 的问题。 上面可能有额外的日志输出。

错误! 可以在以下位置找到此运行的完整日志:npm ERR!
/home/ftijpnql/.npm/_logs/2021-10-05T16_19_33_946Z-debug.log

尽管具有相同的依赖项和节点版本,但该项目正在我的系统中运行。

包.json

{
  "name": "thechoicebox-backend",
  "version": "1.0.0",
  "engines": {
    "node": "14.7.0"
  },
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node dist/app.js",
    "dev": "nodemon server.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "bcrypt": "^5.0.1",
    "body-parser": "^1.19.0",
    "dotenv": "^10.0.0",
    "express": "^4.17.1",
    "http": "0.0.1-security",
    "jsonwebtoken": "^8.5.1",
    "multer": "^1.4.2",
    "mysql2": "^2.2.5",
    "sequelize": "^6.6.2"
  },
  "devDependencies": {
    "nodemon": "^2.0.7"
  }
}

我的生产节点版本是 14.xx 与 package.json 文件中的不同,因为那里不存在。

请帮助我,我被卡住了!

我在调试时遇到了 Node 的“类似”问题,我想使用 nodemon 更改为 dev。

  • 检查您的/dist文件夹
    • /dist 文件夹包含源代码的最小化版本。
    • /dist 文件夹中的代码实际上是用于生产 Web 应用程序的代码。 随着缩小的代码。
    • /dist 文件夹还包含所有已编译的模块,这些模块可能会或可能不会与其他系统一起使用。
    • /dist 文件夹还包含运行/构建用于其他平台的模块所需的所有文件 - 直接在浏览器中或在系统中。
  • 非常重要:
    • 理想情况下,在每次构建之前清理 /dist 文件夹被认为是一种很好的做法。

这绝对帮助了我。 希望这对你也有帮助。

包安装出现问题

您可以重新安装:

rm -rf node_modules

然后

npm install

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM