错误:请手动安装mysql2包

时间:2018-05-30 22:16:51

标签: node.js sequelize.js

使用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"
  }
}

11 个答案:

答案 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)

  1. 列出您的全局npm软件包

    npm list -g --depth 0

  2. 卸载sequelize

    npm uninstall -g sequelize

  3. 在项目范围内安装sequelize

    npm install --save sequelize

答案 5 :(得分:0)

我无法调用特定的sequelize实例(本地vs全局),因此我卸载了通过yarn yarn global remove sequelize添加的全局sequelize,然后将其本地添加到我的项目yarn add sequelize中。

npm等效项为npm -g uninstall sequelizenpm 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 mysql2npm install mysql2

重启你的终端

完成!

答案 10 :(得分:-2)

您是否尝试过在运行sequelize db:migrate之前保存config.json文件?就我而言,那是我