232

少し前にnpmに公開したモジュールを作成しました(https://npmjs.org/package/wisp)

したがって、コマンドラインから正常にインストールされます。

$ npm i -g wisp

ただし、コマンドラインから実行すると、オプティミストがインストールされていないというエラーが表示され続けます。

$ wisp 
Error: Cannot find module 'optimist'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (/usr/local/lib/node_modules/wisp/wisp:12:10)
    at Object.<anonymous> (/usr/local/lib/node_modules/wisp/wisp:96:4)
    at Module._compile (module.js:449:26)
    at Object.exports.run (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:68:25)
    at compileScript (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:135:29)
    at fs.stat.notSources.(anonymous function) (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:110:18)

ただし、私はpackage.jsonで依存関係として指定しました:

{
  "name": "wisp",
  "author": "Brendan Scarvell <bscarvell@gmail.com>",
  "version": "0.1.0",
  "description": "Global nodejs file server",
  "dependencies": {
    "optimist": "~0.3.4"
  },
  "repository": "git://github.com/tehlulz/wisp",
  "bin": {
    "wisp" : "./wisp"
  }
}

誰かがこれを実行するために何をすべきか知っていますか?実行可能ファイルをbinに追加し、そのディレクトリ内のnode_modulesが空であるbin部分と関係があることを私は知っています。これを解決する方法がわかりません。

4

19 に答える 19

405

これに遭遇した他の人にとっては、自分以外npmの場所にインストールしたためにこの問題が発生しましたNODE_PATH

[root@uberneek ~]# which npm
/opt/bin/npm
[root@uberneek ~]# which node
/opt/bin/node
[root@uberneek ~]# echo $NODE_PATH

私のNODE_PATHは空で、実行すると、次の場所npm install --global --verbose promised-ioにインストールされていることがわかりました/opt/lib/node_modules/promised-io

[root@uberneek ~]# npm install --global --verbose promised-io
npm info it worked if it ends with ok
npm verb cli [ '/opt/bin/node',
npm verb cli   '/opt/bin/npm',
npm verb cli   'install',
npm verb cli   '--global',
npm verb cli   '--verbose',
npm verb cli   'promised-io' ]
npm info using npm@1.1.45
npm info using node@v0.8.4
[cut]
npm info build /opt/lib/node_modules/promised-io
npm verb from cache /opt/lib/node_modules/promised-io/package.json
npm verb linkStuff [ true, '/opt/lib/node_modules', true, '/opt/lib/node_modules' ]
[cut]

私のスクリプトは失敗しますrequire('promised-io/promise')

[neek@uberneek project]$ node buildscripts/stringsmerge.js 

module.js:340
    throw err;
          ^
Error: Cannot find module 'promised-io/promise'
    at Function.Module._resolveFilename (module.js:338:15)

おそらく、を使用してソースからノードとnpmをインストールしconfigure --prefix=/optました。これにより、インストールされているモジュールを見つけることができなくなった理由がわかりません。今のところ修正は、NODE_PATHを正しいディレクトリに向けることです。

export NODE_PATH=/opt/lib/node_modules

require('promised-io/promise')は今成功しています。

于 2013-01-25T05:25:40.963 に答える
44

これをprog(mac)の先頭に追加します。

module.paths.push('/usr/local/lib/node_modules');

于 2014-10-15T11:14:28.607 に答える
16

デフォルトでは、ノードはグローバルモジュールをロードするために/ usr / local / lib/node_moduleの内部を調べません。http://nodejs.org/api/modules.html#modules_loading_from_the_global_foldersで説明されているモジュールの読み込みを参照してください

したがって、1)/ usr / local / lib / node_moduleをNODE_PATHに追加してエクスポートするか、2)インストールされているノードモジュールを/ usr / local / lib/nodeにコピーする必要があります。(モジュールノードをロードするためのリンクで説明されているように、このパスを検索して機能します)

于 2013-11-26T18:15:12.017 に答える
13

次の一般的な修正は、すべてのモジュールに適用されます。たとえば、request-promise

交換

npm install request-promise --global

npm install request-promise --cli

働いた(ソース)そしてまたのためにglobalsそしてinherits

また、環境変数を設定してみてください

NODE_PATH=%AppData%\npm\node_modules
于 2017-09-22T07:07:13.700 に答える
11

他に何も機能しなかった(私のような)一部の人は、これを試してください:

brew cleanup
brew link node
brew uninstall node
brew install node

それが誰かを助けることを願っています:)

于 2015-12-14T17:15:13.333 に答える
8

「optimist」モジュールエラーが発生し、それを解決するために「npminstall」を実行しました。そのエラーを通り過ぎました。

https://github.com/mbloch/mapshaper/issues/12

于 2014-11-14T18:18:51.387 に答える
3

Windowsでは、クリーンインストールを実行したばかりで、これを取得した場合は、\ AppData\Roamingにあるnpmキャッシュを吹き飛ばす必要があります。

于 2016-07-29T03:37:57.890 に答える
3

$ vim /etc/profile.d/nodejs.sh

export NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
于 2016-10-05T16:38:23.600 に答える
2

Windowsの場合、NodejsからWindowsにインストールされているモジュールが見つかりませんか?私のために働いたのは、次のようにnpmリンクを実行しています

npm link wisp
于 2016-08-07T04:05:56.170 に答える
2

私はこれを簡単な方法で行いました...

  1. コントロールパネルからノードをアンインストールする[Windows7]
  2. ノードを再インストールします
  3. 分度器の npm install --global --verbose protractor
    更新Webドライバーマネージャーをインストールします。

私にとってはうまくいきます。

これがお役に立てば幸いです。

于 2017-03-25T02:53:50.003 に答える
2

Error: Cannot find module 'number-is-nan'モジュールが実際に存在するのに、このエラーが発生しました。これは、Node.jsのインストールが不良/不完全であったことが原因でした。

Windowsの場合、他の回答が示唆しているように、クリーンなノードのインストールが必要です。

  • Node.jsをアンインストールします
  • npm2つのフォルダを削除npm_cacheしてC:\Users\user\AppData\Roaming
  • Windowsを再起動し、Node.jsをインストールします
  • またはを実行しますnpm initデフォルトの構成の場合)npm init --yes
  • のWindows環境変数を設定しますNODE_PATH。このパスは、パッケージがインストールされる場所です。おそらく次のようなものですNODE_PATH = C:\Users\user\node_modules or C:\Users\user\AppData\Roaming\npm\node_modules
  • 新しいcmdコンソールを起動し、正常にnpm動作するはずです

ノート :

Node.jsを再インストールする前に最後のポイントを試してください。時間を節約し、すべてのパッケージを再インストールすることを回避できます。

于 2018-05-11T11:45:00.683 に答える
2

Macユーザーの場合手動インストールを使用するのが最善です。

アクセス許可エラーの可能性を最小限に抑えるために、別のディレクトリを使用するようにnpmを構成できます。この例では、ホームフォルダの隠しディレクトリになります。

  1. 開始する前にコンピュータをバックアップしてください。

  2. グローバルインストール用のディレクトリを作成します。

    mkdir〜/.npm-グローバル

  3. 新しいディレクトリパスを使用するようにnpmを構成します。

    npm config set prefix'〜/.npm-global'

  4. 〜/ .profileファイルを開くか作成して、次の行を追加します。

    export PATH =〜/ .npm-global / bin:$ PATH

  5. コマンドラインに戻り、システム変数を更新します。

    ソース〜/ .profile

  6. テスト:sudoを使用せずにパッケージをグローバルにダウンロードします。

    npm install -g jshint

手順2〜4の代わりに、対応するENV変数を使用できます(たとえば、〜/ .profileを変更したくない場合)。

NPM_CONFIG_PREFIX=~/.npm-global

参照:https ://docs.npmjs.com/getting-started/fixing-npm-permissions

于 2018-06-14T07:26:00.580 に答える
2

axiosモジュールのこの問題に遭遇しました。それから私はこれを試しました:実行rm -rf node_modulesしてyarn。そしてそれは動作します。

于 2019-07-30T02:45:08.333 に答える
1

Ubuntuで実行されているテストサーバーの1つで同じ問題が発生しましたroot。次に、すべて(、、パッケージ)を使用useradd -m myuserして新しいユーザーを作成し、としてインストールしました。今では正常に動作しています。nvmnodemyuser

于 2015-08-11T22:10:34.077 に答える
1

私の場合、とは両方ともnode同じnpmパスにありました(/usr/bin)。はNODE_PATH空だったので、npmグローバルモジュールを正常に検出できる/usr/lib/node_modules場所に配置require(...)しました。唯一の例外はnpm、nodejsパッケージに付属しているモジュールでした。64ビットシステムを使用しているので、に配置しまし/usr/lib64/node_modulesた。NODE_PATHこれは、空でノードがから開始された場合にrequire(...)が検索する場所ではありません/usr/bin。だから私には2つの選択肢がありました:

  • リンク/usr/lib64/node_modules/npm/usr/lib/node_modules/npm
  • モジュールをから/usr/lib/node_modules/*に移動し/usr/lib64/node_modules/て設定するNODE_PATH=/usr/lib64/node_modules

両方とも機能しました。OpenSUSE42.1とupdatesリポジトリのnodejsパッケージを使用しています。バージョンは4.4.5です。

于 2016-09-27T13:27:20.777 に答える
0

OPと同じエラーが発生しましたが、ログを調べてみるとわかりsh: node: command not foundました。

/ usr / bin / nodeプログラム(シンボリックリンク)が。とともにインストールされなくなったことがわかりましたapt install nodejs。シンボリックリンクされた/usr/bin/node' tonodejsnpminstall ,-g @ angle/cli`が成功すると。

これをdebianにインストールする適切な方法はapt install nodejs-legacyです。

于 2017-11-12T23:17:53.193 に答える
0

C:\ Users \ {Username} \ AppData \ Roaming \ npmを環境変数に追加する必要がありました。そうすれば、インストールできます。

于 2018-07-19T17:25:05.790 に答える
0

同じ問題に直面し、zshrcに以下の行を追加することで解決しました。シェルに基づいて、自宅の場所にあるbashおよびzsh-bashrc/zshrcファイルのrcファイルに追加してみることができます。

export NODE_PATH="/usr/local/lib/node_modules"

zshrcファイルを直接追加するには、このコマンドを実行します

echo 'export NODE_PATH="/usr/local/lib/node_modules"' >> ~/.zshrc
于 2021-10-28T07:22:47.573 に答える
0

アルパイン/コンテナ化

他の場所で述べたように、解決策はあなたのイメージに焼き付けることです、

NODE_PATH=/usr/local/lib/node_modules/

私もapkで上流の問題を開いたnpmので、これは設定されます

于 2021-12-29T01:26:58.093 に答える