[node.js] NPM 전역 설치“모듈을 찾을 수 없음”

얼마 전에 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에 실행 파일을 추가하는 bin 부분과 관련이 있으며 해당 디렉토리의 node_modules가 비어 있습니다. 이 문제를 해결하는 방법을 모릅니다.



답변

다른 사람 이이 문제가 발생하면 내 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)

아마를 사용하여 소스에서 node 및 npm을 설치했을 것입니다 configure --prefix=/opt. 이것이 왜 설치된 모듈을 찾을 수 없는지 모르겠습니다. 지금 수정은 올바른 디렉토리에서 NODE_PATH를 가리 키도록하는 것입니다.

export NODE_PATH=/opt/lib/node_modules

나의 require('promised-io/promise')성공


답변

prog (mac)의 시작 부분에 이것을 추가하십시오 :

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


답변

기본적으로 노드는 전역 모듈을로드하기 위해 / 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에 복사해야합니다. (로드 모듈 노드 링크에 설명 된 것처럼이 경로를 검색하고 작동합니다)


답변

아무것도 효과가없는 일부 (나 같은)의 경우 다음을 시도하십시오.

brew cleanup
brew link node
brew uninstall node
brew install node

그것이 누군가를 돕기를 바랍니다 🙂


답변

다음 일반 수정 사항은 모든 모듈에 적용됩니다. 예를 들어 request-promise.

바꾸다

npm install request-promise --global

npm install request-promise --cli

일 ( 소스 에 대한도)과 globalsinherits

또한 환경 변수를 설정하십시오.

NODE_PATH=%AppData%\npm\node_modules


답변

“optimist”모듈 오류가 발생하여 방금 “npm install”을 수행하여 문제를 해결했습니다. 그 오류를 지났다.

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


답변

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

NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
export NODE_PATH="$NODE_PATH"