npm出现“无法读取依赖项”错误

52

我想开始一个Node应用程序,并按照教程创建了一个package.json文件。以下是该json文件:

{
    "name": "Dashboard",
    "version": "0.0.0",
    "description": "Client-A Dashboard",
    "dependencies": {
        "socket.io": "latest",
        "express": "latest",
        "jade": "latest"
    },
    "author": "tD"
}

在尝试运行npm install命令时,我先验证了JSON文件,但仍然收到错误消息:

npm ERR! install Couldn't read dependencies
npm ERR! Error: ENOENT, open 'C:\projects\Client-A\Live\package.json'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files (x86)\\nodejs\\\\node.exe" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! cwd C:\projects\Client-A\Live\
npm ERR! node -v v0.8.22
npm ERR! npm -v 1.2.14
npm ERR! path C:\projects\Client-A\Live\package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     C:\projects\Client-A\Live\npm-debug.log
npm ERR! not ok code 0

这里是npm-debug.log文件。

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files (x86)\\nodejs\\\\node.exe',
1 verbose cli   'C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'install' ]
2 info using npm@1.2.14
3 info using node@v0.8.22
4 verbose node symlink C:\Program Files (x86)\nodejs\\node.exe
5 verbose read json C:\projects\Client-A\Live\package.json
6 error install Couldn't read dependencies
7 error Error: ENOENT, open 'C:\projects\Client-A\Live\package.json'
8 error If you need help, you may report this log at:
8 error     <http://github.com/isaacs/npm/issues>
8 error or email it to:
8 error     <npm-@googlegroups.com>
9 error System Windows_NT 6.1.7601
10 error command "C:\\Program Files (x86)\\nodejs\\\\node.exe" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
11 error cwd C:\projects\Client-A\Live\scoreboard
12 error node -v v0.8.22
13 error npm -v 1.2.14
14 error path C:\projects\Client-A\Live\package.json
15 error code ENOENT
16 error errno 34
17 verbose exit [ 34, true ]

25
请确认您是否从包含 package.json 文件的同一目录中运行了 npm install 命令? - badsyntax
是的,我在同一个目录下。 - dvdmn
以管理员身份运行CMD并尝试安装。 - Chandu
我在没有“以管理员身份运行”的情况下尝试时收到了权限错误。我使用管理员权限时也遇到了上述错误。 - dvdmn
17个回答

58

我遇到了一个"Invalid Name"错误。

我将"name": "Some Name",...更改为"name": "Some-Name",...

猜测name需要是一个slug字符串。


1
这个有文档吗? - srijan
好像不是这样。我也没有报告过 :/ - Cody
谢谢,伙计。那正是我的问题。该死的“蛞蝓”.. :) - Tim Goyer
这对我来说也是如此。 - sheppe

29
尝试添加以下内容:"private": true, 对我有用。
编辑(针对询问原因的人): 官方文档指出如下内容:
如果在package.json中设置了"private": true,那么npm将拒绝发布它。这是一种防止私有存储库意外发布的方法。如果您想确保给定的软件包仅发布到特定的注册表(例如,内部注册表),则使用下面描述的publishConfig 哈希在发布时覆盖registry配置参数。
与您收到的错误消息可能与某种方式违反此规则有关(我的错误也是如此)。
要么您将未发布的软件包(如自己的应用程序)标记为"private": false。或者您根本不包含任何值。

很高兴它能够帮到你,我希望它也能帮助更多的人 :) - JorgeArtware
2
为什么这个能解决问题?我遇到了类似的问题,但是这个方法并不能解决。这里是否有更深层次的问题?(非常感谢您的回答!只是想找出我的构建过程中发生了什么问题 :)) - streetlight
3
啊,没关系,我发现我在运行时没有在正确的目录下。谢谢! - streetlight
我也试过了,但为什么呢? - AGamePlayer
2
"private": true,我应该在哪里添加? - Developer

26

最近,我开始遇到一个错误:

npm ERR! install Couldn't read dependencies
npm ERR! Error: Invalid version: "1.0"

因此,如果您遇到类似的错误,则可能需要使用3个数字指定软件包的版本,例如1.0.0而不是1.0

13

很简单,你只是没有进入正确的目录。

进入 C:\Program Files\nodejs\node_modules\npm 目录,然后你应该能够正确运行这个命令。


这是一个可能的原因,但绝不是唯一的原因。 - Steve Bennett
对我来说,这就是问题所在。 - James

11

尝试更新npm,这对我有用

[sudo] npm install -g npm

2
这是什么作用?这对我有用,但我无法单独使用 npm install - tylersDisplayName

4

我也遇到了同样的异常,但在另一台机器上以前是正常运行的。无论如何,以上解决方案对我没有起作用。那我是怎么解决它的呢?

  1. 将依赖列表复制到剪贴板。
  2. 输入 "npm init" 创建一个全新的 package.json。
  3. 再将依赖项粘贴回 package.json 中。
  4. 再次运行 "npm install"!

搞定 :) 希望有所帮助。


是的,很奇怪,手动创建了node_modules文件夹和package.json文件之后,它就可以工作了。 - prograhammer
是的,我曾经苦苦挣扎地运行它,然后进行了搜索,但无法使其正常工作。最终上述方法对我起作用了。很高兴那有所帮助 :) - HADI

2
对我来说,版本是最重要的。是的,就是你放在根目录下的那一行代码,例如:
{
    "name": "your-project",
    "version": "0.1"
    ...
}

是的,npm不喜欢这样的版本号,它更喜欢像"0.0.1"这样的版本号。
别问我为什么,我告诉你这完全是愚蠢的(或者说是“如何轻松浪费时间”)。

2

我的错误在于我将文件名命名为packages.json而不是package.json


1
我发现我不在正确的文件夹中。在运行此命令之前,我需要进入刚克隆的文件夹。

哈哈,我刚刚也做了同样的事情,看到你的答案让我动了一下脑筋。谢谢。 :) - slightlyfaulty
很高兴我的错误没有白费 :),也很高兴我能帮忙。 - Micah Armantrout

1
当我在package.json文件中的"name"中有空格时,出现了这个错误。
"NPM Project" 而不是 "NPMProject"。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接