【发布时间】: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,您会在其中找到它吗? -
是的。我尝试使用
knex0.15.2 版并且它可以工作,也许它与0.19.5 版有关