我尝试执行以下操作(根据official site的说明):
mkdir hapi && cd hapi
npm init
npm install hapi --save
但这给我一个错误:
npm WARN install拒绝安装hapi作为其自身的依赖
现在,我创建了一个名为hapiTest
的新测试文件夹并重复了这些命令,然后一切正常。
我使用文件夹gulp
和npm install gulp --save
尝试了相同的过程,并得到了同样的错误,所以我的结论是我无法将文件夹的名称设置为相同我想要安装的软件包,但有人可以用一些官方文档来支持这个声明吗?
答案 0 :(得分:115)
当您执行命令npm init
时,您可能需要回答一些相关问题。具体来说,是模块的名称。当您使用npm init
时,它假定您希望将要创建的模块的名称称为其所在文件夹的名称。
所以 文件夹 的名称不能阻止您安装依赖项,它是 npm模块的名称 您正在创建。
在package.json
目录中打开生成的hapi
,并将模块重命名为hapi
以外的其他内容。这是一个“package.json”示例,即使驻留在名为 hapi 的文件夹中也可以使用:
{
"name": "hapi-test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"hapi": "^7.5.2"
}
}
添加了注释
我无法找到任何文件 - 远在npm的背景下解释这种现象;虽然这有点不费吹灰之力。在同一个应用程序中要求具有相同名称的模块会与CommonJS哲学冲突。
答案 1 :(得分:10)
模块的名称与您尝试安装的模块相同。 NPM认为您正在将模块安装到自身。更改模块的名称,它将完美安装。
答案 2 :(得分:5)
<强>原因强> 模块名称与库名称相同
<强>解决方案强>
答案 3 :(得分:0)
该问题可简单解释如下
package.json
中您的软件包或模块的名称不能与您尝试安装的软件包或模块的名称相同 。
此处hapi
是您模块的名称,您尝试安装名为hapi
且npm install hapi --save
答案 4 :(得分:0)
这是我的初始代码
{
"name": "react",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"react": "^15.6.1"
}
}
引发了错误
npm WARN package.json react@1.0.0 No description
npm WARN package.json react@1.0.0 No repository field.
npm WARN package.json react@1.0.0 No README data
npm WARN install Refusing to install react as a dependency of itself
然后我将名称从react更改为react_app,我的代码看起来像
{
"name": "react_app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"react": "^15.6.1"
}
}
然后它起作用了