使用sequalize db:migrate 命令时出现以下错误。看一下之前关于类似问题的一些评论,人们说这是一个依赖性问题,但无论何时我运行
npm install mysql2
或
npm install -g mysql2
我得到了同样的错误。
larry@DESKTOP-NSSNPRR:/mnt/c/Users/larry/Desktop/node/AAF-NodeJS$
sequelize db:migrate
Sequelize CLI [Node: 10.1.0, CLI: 4.0.0, ORM: 4.37.10]
(node:2241) ExperimentalWarning: The fs.promises API is experimental
Loaded configuration file "db/config/database.json".
Using environment "development".
ERROR: Please install mysql2 package manually
这是我的package.json,就像你们有些人要求的那样。
{
"name": "aaf-website-node",
"version": "0.0.1",
"description": "Nodejs implementation of the achieve anything website",
"main": "app.js",
"scripts": {
"start": "node bin/www",
"dev": "node node_modules/nodemon/bin/nodemon.js bin/www",
"test": "jasmine",
"console": "node console.js"
},
"repository": {
"type": "git",
"url": "https://github.com/AchieveGirl/AAF-NodeJS.git"
},
"keywords": [
"nodejs",
"express"
],
"author": "Larry Cherry",
"license": "MIT",
"bugs": {
"url": "https://github.com/AchieveGirl/AAF-NodeJS/issues"
},
"homepage": "https://github.com/AchieveGirl/AAF-NodeJS/blob/master/README.md",
"dependencies": {
"body-parser": "^1.18.2",
"bootstrap": "^4.0.0",
"compression": "^1.7.2",
"cookie-parser": "^1.4.3",
"dotenv": "^5.0.1",
"ejs": "^2.5.7",
"eslint": "^4.19.1",
"express": "^4.16.3",
"express-ejs-layouts": "^2.3.1",
"express-minify": "^1.0.0",
"express-minify-html": "^0.12.0",
"jquery": "^3.3.1",
"lodash": "^4.17.5",
"morgan": "^1.9.0",
"mysql2": "^1.5.3",
"node-fetch": "^2.1.2",
"node-minify": "^2.4.1",
"popper.js": "^1.14.3",
"sequelize": "^4.37.10",
"sequelize-cli": "^4.0.0",
"serve-favicon": "^2.4.5",
"webpack": "^4.1.1",
"webpack-cli": "^2.0.12"
},
"devDependencies": {
"nodemon": "^1.17.2",
"pryjs": "^1.0.3"
}
}
答案 0 :(得分:2)
所以我终于找到了这个bug。问题似乎来自于您从全局安装sequelize-cli而不是本地安装的sequelize版本中调用迁移。我所要做的就是从节点模块文件夹中调用脚本,它完美地工作。当我需要以这种方式调用本地安装的软件包sequelize db:migrate
node_modules/.bin/sequelize db:migrate
答案 1 :(得分:1)
我使用以下命令从项目文件夹中全局安装了mysql2软件包:
npm install mysql2 -g
答案 2 :(得分:0)
您收到错误消息以提示您安装mysql2
模块的原因是因为db:migrate
命令依赖于mysql2
,而是optionalDependencies
,所以你必须手动安装mysql2
模块
答案 3 :(得分:0)
这个为我工作
npm install mysql2 --save
答案 4 :(得分:0)
列出您的全局npm软件包
npm list -g --depth 0
卸载sequelize
npm uninstall -g sequelize
在项目范围内安装sequelize
npm install --save sequelize
答案 5 :(得分:0)
我无法调用特定的sequelize实例(本地vs全局),因此我卸载了通过yarn yarn global remove sequelize
添加的全局sequelize,然后将其本地添加到我的项目yarn add sequelize
中。
npm等效项为npm -g uninstall sequelize
和npm install sequelize
。
注意,如果有人通过相同的方法,我确实安装了mysql2。
答案 6 :(得分:0)
自从5.2.0版开始,nodejs附带了一个名为npx的实用程序,该实用程序注定要用作“程序包运行器”,因为它首先会在node_modules中查找程序包,因此您运行时不会再有麻烦了命令。
现在应将NPM用作依赖项管理器,而不是命令运行器。
您可以检查两个here
的差异答案 7 :(得分:0)
我通过运行解决了它:-
yarn add mysql2
答案 8 :(得分:0)
您可能运行了 npm install -g sequelize
。您需要使用 npm uninstall -g sequelize
撤消此操作,然后改用此 npm install -g sequelize-cli
。这对我有用。
答案 9 :(得分:0)
yarn add mysql2
或 npm install mysql2
重启你的终端
完成!
答案 10 :(得分:-2)
您是否尝试过在运行sequelize db:migrate之前保存config.json文件?就我而言,那是我