每次安装/卸载/查看操作时,npm都会抛出ENOENT警告

33

我正在尝试在Windows 7 shell上为一些JavaScript测试开发包进行npm安装,这些包直接存储在我本地克隆的源代码库中,包括karma、chai和mocha。 在安装和卸载其他软件包时,我始终会收到以下错误信息。

npm WARN ENOENT ENOENT, open '..SourceDirectory\package.json'
npm WARN EPACKAGEJSON ..SourceDirectory\ No description
npm WARN EPACKAGEJSON ..SourceDirectory\ No repository field.
npm WARN EPACKAGEJSON ..SourceDirectory\ No README data
npm WARN EPACKAGEJSON ..SourceDirectory\ No license field.

npm ls也会生成结果

npm ERR! error in ..SourceDirectory\: ENOENT, open '..SourceDirectory\package
.json'

我从 Windows Upgrade 中拉取了 Windows npm 升级的 beta 版本,因为我遇到了文件系统路径长度错误。 我的警告路径中没有 package.json 依赖项列表。 我错过了什么配置步骤吗?


9
你的应用程序文件夹里有一个 package.json 文件吗?你运行了 npm init 命令吗? - Kevin B
这就是解决方案,非常感谢。 - Rice
8个回答

43
错误信息可能是由于缺少 package.json 文件引起的。将目录更改为您项目的本地目录,例如(而不是使用项目的当前工作目录):
cd /var/www/nodeBot

以下字符串将写入package.json

npm init

回答菜单驱动的问题或使用--yes来跳过它们。然后在结尾处按Enter键以写出文件。你可能会看到类似这样的东西:

Wrote to /usr/local/bin/package.json:

{
  "name": "bin",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "twit": "^2.1.1"
},
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

npmnode.js 的包管理器。 package.json 成为了 npm 的配置文件或设置文件。 twit 依赖项是安装在我的项目目录中的程序。 npm install twit


如果您的项目目录中存在 package.json 文件,您可以使用文本编辑器填写空数据字段,以避免出现错误消息。
在 package.json 文件中找到 description 字段,并手动添加描述:
"description": "This is my latest disruptive technology app.",

license 字段中,您可以添加 ISC,它基本上意味着这是一个开源项目
"license": "ISC"

cd /var/www/nodeBot 没有这个文件或目录。 - Awesome_girl
那个目录只是一个例子。请将该例子目录替换为您项目的当前工作目录。 - noobninja
抱歉我的困惑...我的目标是使用尽可能少的实现细节来安装npm库,因为我专注于使用这些库。当我有更多时间时,我会尝试更好地了解npm...在Python中,我通常可以不了解细节就执行pip install LIB。我希望在npm中也能做到这一点。那么...当我运行npm init时,应该在哪个目录下?我只需要运行一次还是每次安装软件包时都需要运行?我是否需要为我尝试安装的每个项目创建一个package.json文件?package.json文件(或文件?)需要放在哪里? - Clem Wang
安装完npm install lodash后,它的最新版本将被添加到您项目的node_modules文件夹中,并且相应的一行将自动添加到您的package.json文件的dependencies列表中。假设您已经使用npm init初始化了您的项目(创建了package.json)。同时请记住,您可以本地和全局安装软件包。 - user5556825

8

我曾经遇到过同样的问题,所以我试了这些命令。它对我起作用了。

npm install npm@latest -g

希望这对你也有帮助。


2
我运行了以下命令,这对我非常有效!!!
npm cache clean --force

2
旧的已经不行了。现在我们需要使用--force。 - Chandy Kunhu

1
我曾经遇到过这个问题,我所做的就是删除package-lock.json文件,现在它可以正常工作了。希望能对某人有所帮助。

1

您的父级 package.json 文件中的 "engines" 值可能存在问题。

例如,我曾经有过:

"engines" : {
    "node": ">=6.10.0",
    "npm": ">=4.3.0"
}

我删除了“npm”关键字,然后它就好使了(我在想为什么....)


0

你需要切换到你正在工作的目录,然后运行:

npm -init

运行完毕后,继续按回车键直到到达结尾。


这基本上与四年前被接受的答案完全相同,只是它提供了较少的解释和略微不同的语法。 - Jeremy Caney

0

曾经遇到了同样的问题,通过以下方式解决:

cd [project folder]
npm cache clean --force
npm install -d
sudo npm update

0

我也遇到了同样的问题,但是我犯了一个愚蠢的错误。

如果你的npm已经正确安装,那么问题可能是开发者在选择当前目录安装.js包时产生了混淆。 实际上,使用npm安装任何东西都需要在要安装包的目录中有Package.json文件

例如:npm install abcd

现在,如果你想通过npm安装abcd包,请确保你在终端中使用正确的目录

例如:我的mac上的npm目录是

/Users/myMac/node_modules/assert-plus/package.json

所以,确保你在目录

/Users/myMac/node_modules/assert-plus

通过终端选择此目录,然后输入npm install abcd


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