web-dev-qa-db-ja.com

npm WARN install hapiをそれ自体の依存関係としてインストールすることを拒否

私は次のことを試みました( 公式サイト からの指示に従って):

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

しかし、これは私にこのようなエラーを与えます:

npm WARN install hapiをそれ自体の依存関係としてインストールすることを拒否

ここで、hapiTestという新しいテストフォルダーを作成し、コマンドを繰り返したところ、すべて正常に機能しました。

フォルダーgulpnpm install gulp --saveを使用して同じプロセスを試しましたが、同じエラーが発生したため、フォルダーの名前をパッケージと同じにすることはできませんインストールしたいが、誰かがこの声明をいくつかの公式文書でバックアップできますか?

40
Nikola

コマンドnpm initを実行したとき、おそらく答える必要のある関連する質問がいくつかありました。具体的には、モジュールの名前。 npm initを使用すると、作成しているモジュールの名前を、その中にあるフォルダーの名前と呼ぶことになります。

したがって、依存関係のインストールを停止しているのは、folderの名前ではなく、作成するnpm moduleの名前。

結果のpackage.jsonhapiディレクトリ内で開き、モジュールの名前をhapi以外に変更します。以下は、hapiというフォルダーにある場合でも機能する「package.json」の例です。

{
  "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 哲学と矛盾します。

116
shennan

モジュールの名前は、インストールしようとしているモジュールと同じです。 NPMは、モジュールを自分自身にインストールしていると考えています。モジュールの名前を変更すると、完全にインストールされます。

10
Kashif Nazar

理由モジュール名はライブラリ名と同じです

ソリューション

  1. モジュール名を別のものに変更します
  2. Package.jsonの「名前」を変更します
5
Shanky Munjal

これは私の最初のコードでした

{
  "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 [email protected] No description
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] 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"
  }
}

それは働いた

0
cryptoKTM

この問題は次のように簡単に説明できますpackage.jsonのパッケージまたはモジュールの名前は、インストールしようとしているパッケージまたはモジュールの名前と同じにすることはできません

ここで、hapiはモジュールの名前であり、npm install hapi --savehapiという名前のモジュールをインストールしようとしています。

0
Samuel J Mathew