npm WARN install Refusing to install hapi as a dependency of itself

江枫思渺然 提交于 2019-11-27 13:26:37

问题


I tried to do the following (per instructions from official site):

  • mkdir hapi && cd hapi
  • npm init
  • npm install hapi --save

But this gives me an error like this:

npm WARN install Refusing to install hapi as a dependency of itself

Now, I made a new test folder called hapiTest and repeated the commands and then everything worked fine.

I tried the same process with a folder gulp and npm install gulp --save, and got the same error, so my conclusion is that I can't have the name of the folder be the same as the package that I want to install, but can someone back this statement up with some official documentation?


回答1:


When you did the command npm init, there were probably some relevant questions you needed to answer. Specifically, the name of your module. When you use npm init, it assumes you want the name of the module you're creating to be called the name of the folder it is in.

So it's not the name of the folder that is stopping you from installing the dependency, it is the name of the npm module that you are creating.

Open the resulting package.json within your hapi directory, and rename the module to something other than hapi. Here's an example 'package.json' that works, even when residing in a folder called 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"
  }
}

Added Note

I've not been able to find any documentation thus-far explaining this phenomena in the context of npm; though it is a bit of a no-brainer. Requiring modules with the same name within the same application would conflict with the CommonJS philosophy.




回答2:


The name of your module is same as the module you are trying to install. NPM thinks that you are installing the module to itself. Change the name of your module and it will install perfectly.




回答3:


Reason Module name is same with library name

Solution

  1. Change the module name to something else
  2. Change 'name' in package.json



回答4:


The issue can be simply explained as follows the name of your package or module in package.json cannot be same as that of the package or module you are trying to install.

Here hapi is the name of your module and you are trying to install a module with name hapi with npm install hapi --save




回答5:


This was my initial code

{
  "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"
  }
}

which threw error

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

then i renamed the name from react to react_app and my code looks like

{
  "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"
  }
}

then it worked



来源:https://stackoverflow.com/questions/27267707/npm-warn-install-refusing-to-install-hapi-as-a-dependency-of-itself

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!