【问题标题】:Heroku Error: Cannot find module 'knex' with nodejs deployHeroku 错误:无法使用 nodejs 部署找到模块“knex”
【发布时间】:2023-04-10 12:04:01
【问题描述】:

我正在尝试部署一个 nodejs 应用程序,但我收到了错误 Error: Cannot find module 'knex'。在 Heroku bash 中,node_modules 中没有 knex 文件夹。我在 Heroku bash 中通过 npm 安装了 knex,但没有成功。我像this question 中所述更改了我的 package.json,但错误仍然相同。 这是我的 package.json:

{
  "name": "control",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start":"node index.js"
  },
  "license": "ISC",
  "dependencies": {
    "bcrypt-nodejs": "0.0.3",
    "body-parser": "1.18.3",
    "consign": "0.1.6",
    "cors": "2.8.4",
    "express": "4.16.3",
    "jwt-simple": "^0.5.6",
    "knex": "0.19.5",
    "moment": "2.22.2",
    "mysql": "^2.17.1",
    "passport": "0.4.0",
    "passport-jwt": "4.0.0",
    "pg": "7.4.3",
    "pm2": "3.0.4"
  },
  "devDependencies": {
    "moment": "^2.20.1",
    "nodemon": "1.18.4"
  },
   "engines" : { 
     "node" : "10.16.3",
     "npm": "6.9.0"
     } 
}

【问题讨论】:

  • “我在 Heroku bash 中通过 npm 安装了 knex”——这永远行不通。当你在 Heroku 上运行命令时,你会得到一个新的一次性测功机。当命令退出时(在这种情况下,当您退出 bash 时),您所做的任何更改都将立即丢失。即使它持续存在,它也不会影响您的其他测功机(最重要的是运行您的 Web 进程的测功机)。
  • 您是否完全确定您已使用您在问题中显示的package.json 部署到 Heroku?您是否看到在部署输出中安装了 knex
  • 我确定。在部署输出中,我只能看到Installing node modules (package.json + package-lock),没有具体关于 knex。
  • 如果您在package-lock.json 中搜索knex,您会在其中找到它吗?
  • 是的。我尝试使用knex 0.15.2 版并且它可以工作,也许它与0.19.5 版有关

标签: node.js heroku knex.js


【解决方案1】:

我建议你使用 yarn 和最新版本的 nodejs 很可能你会遇到 nodejs 版本的问题。这是更新库的guide

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
猜你喜欢
  • 1970-01-01
  • 2021-03-17
  • 2019-01-27
  • 2014-03-22
  • 2016-12-25
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
相关资源
最近更新 更多