在package.json中包含依赖项时遇到问题

时间:2014-12-17 19:53:38

标签: javascript angularjs node.js dependencies

我有一个角度项目(实际上只是文档tutorial),我想在我的项目中包含node-mysql模块 - 不必全局安装。

我不确定我是如何理解的,但我认为我所要做的就是将此模块作为依赖项添加到package.json并运行npm install,但是我收到错误:

    PS> cat .\package.json
    {
      "version": "0.0.0",
      "private": true,
      "name": "angular-phonecat",
       ...
      "dependencies": {
        "node-mysql": ">=2.5.0"
      },
      "devDependencies": {
        "karma": "^0.12.16",
       ...

错误:

PS> npm install
npm WARN package.json karma-chrome-launcher@0.1.7 No README data
npm ERR! notarget No compatible version found: node-mysql@'>=2.5.0'
npm ERR! notarget Valid install targets:
npm ERR! notarget ["0.1.1","0.1.2","0.1.3","0.1.4","0.1.5","0.1.6","0.1.7","0.1.8","0.1.9","0.2.0","0.2.1","0.2.2","0.2.3","0.2.4","0.2.5","0.2.6","0.2.7","0.2.8","0.2.9","0.3.0","0.3.1","0.3.2","0.3.3","0.3.4","0.3.5","0.3.6","0.3.7","0.3.8","0.3.9","0.4.0","0.4.1"]
npm ERR! notarget
npm ERR! notarget This is most likely not a problem with npm itself.
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! cwd C:\testangular\ticketsys\angular-phonecat
npm ERR! node -v v0.10.32
npm ERR! npm -v 1.4.28
npm ERR! code ETARGET
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     C:\testangular\ticketsys\angular-phonecat\npm-debug.log
npm ERR! not ok code 0

如何在项目中包含此依赖项?

2 个答案:

答案 0 :(得分:7)

Node-mysql版本> 2.5尚未推出。 Node-mysql的版本为0.4.1。我怀疑你正在寻找常规的mysql npm模块。 npm上的Mysql是2.5.4版本。

请尝试使用此代码:

"mysql": ">=2.5.0"

如果您转到此页面:https://github.com/felixge/node-mysql。他们在安装说明中说使用npm install mysql。这可能有点令人困惑,因为他们的github页面是node-mysql。

或者不是手动将其添加到依赖项中,您可以继续执行以下操作:

npm install mysql --save 

这只会在本地安装最新的一个(不是全局的,如果你想在全局安装它,你可以添加-g标志,但因为你不需要那个!)。

答案 1 :(得分:2)

正如其他答案所述,npm无法识别您指定的版本。我建议从package.json中删除该行,而不是运行一个命令:

npm install --save mysql

这将在本地安装依赖项并将该行添加到package.json(这是--save标志所做的)。这自动默认为node-mysql的最新稳定版本。

一般情况下,你唯一一次想要在package.json中指定一个实际的版本就是一个库修补了你真正想要的一些功能,在这种情况下你可以指定一个版本,以便必要的功能总是那里。所以一定要尽可能开始使用--save标志。它非常实用。祝你好运!