programing

노드에서 글로벌 모듈을 가져오려면 어떻게 해야 합니까?"Error: Can't find module(오류: 모듈을 찾을 수 없음)"이라는 메시지가 표시됩니까

javajsp 2023. 10. 21. 09:58

노드에서 글로벌 모듈을 가져오려면 어떻게 해야 합니까?"Error: Can't find module(오류: 모듈을 찾을 수 없음)"이라는 메시지가 표시됩니까

Mac OSX Lion에서 Node를 설정하려고 합니다.모든 것이 정상적으로 작동하는 것처럼 보이지만, 글로벌 모듈 폴더에서 모듈을 가져올 수 없습니다.오류를 알겠으나마는

Error: Cannot find module <module>

:node -e require.paths, 대답은 다음과 같습니다.

[ '/usr/local/lib/node_modules',
  '/Users/Me/.node_modules',
  '/Users/Me/.node_libraries',
  '/usr/local/Cellar/node/0.4.12/lib/node' ]

맞습니다. 제 모듈은 실제로 /usr/local/lib/node_modules에 설치되어 있습니다.그러나 스크립트를 실행하려고 하면 다음과 같은 메시지가 나타납니다.

Error: Cannot find module 'socket.io'
    at Function._resolveFilename (module.js:326:11)
    at Function._load (module.js:271:25)
    at require (module.js:355:19)
    at Object.<anonymous> (/Users/Me/node/server.js:2:10)
    at Module._compile (module.js:411:26)
    at Object..js (module.js:417:10)
    at Module.load (module.js:343:31)
    at Function._load (module.js:302:12)
    at Array.<anonymous> (module.js:430:10)
    at EventEmitter._tickCallback (node.js:126:26)

내 .bash_profile은 다음과 같습니다.

export PATH=/usr/local/mysql/bin:$PATH
export NODE_PATH=/usr/local/lib/node_modules
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/"

도움을 주시면 정말 감사하겠습니다. 도서관을 가져올 수 없는 이유를 모르겠습니다.

Node.js는 환경 변수를 사용합니다.NODE_PATH모듈 검색 경로에 포함할 추가 디렉토리를 지정할 수 있습니다.사용가능npm글로벌 모듈이 어디에 저장되어 있는지 알려주는 그 자체.npm root -g지휘.따라서 이 두 가지를 종합하면 (Linux-ish에서) 다음 명령을 사용하여 글로벌 모듈이 검색 경로에 포함되도록 할 수 있습니다.

export NODE_PATH=$(npm root --quiet -g)

npm >=1.0을 사용하는 경우 사용할 수 있습니다.npm link <global-package>이미 전역에 설치된 패키지에 대한 로컬 링크를 만듭니다. (Caveat: OS에서 symlink를 지원해야 합니다.)

하지만, 이것은 문제가 없이는 오지 않습니다.

npm link는 개발 도구입니다.로컬 개발 상자에서 패키지를 관리하기에 아주 좋습니다.그러나 npm 링크를 사용하여 배포하는 것은 기본적으로 문제를 요구하는 것입니다. 왜냐하면 그것은 자신도 모르는 사이에 업데이트하는 것을 매우 쉽게 만들기 때문입니다.

또는 패키지를 로컬뿐 아니라 전역에 설치할 수도 있습니다.

자세한 내용은 다음을 참조하십시오.

npm 링크를 사용하여 프로젝트 폴더에 글로벌 패키지에 대한 심볼릭 링크를 만들 수 있습니다.

예:

$ npm install -g express
$ cd [local path]/project
$ npm link express

-하면 symlink express -> [global directory]/node_modules/express 를됩니다를 하여 할 수 .require('express')

아래와 같이 패키지를 전역적으로 설치합니다.

$ npm install -g replace  // replace is one of the node module.

이 교체 모듈은 전체적으로 설치되므로 노드 모듈 폴더가 표시되면 교체 모듈이 표시되지 않으므로 require('replace')를 사용하여 이 패키지를 사용할 수 없습니다.

필요한 경우 노드 모듈 폴더에 있는 로컬 모듈만 사용할 수 있기 때문입니다.

이제 글로벌 모듈을 사용하려면 아래 명령을 사용하여 노드 모듈 경로와 연결해야 합니다.

$ npm link replace

이제 돌아가서 노드 모듈 폴더를 확인해 보십시오. 이제 교체 모듈을 볼 수 있고 로컬 노드 모듈과 연결되어 애플리케이션에서 필요('교체')와 함께 사용할 수 있습니다.

추가적인 설명이 필요하면 저에게 알려주시기 바랍니다.

require를 글로벌 모듈 디렉토리의 경로와 함께 인수로 사용할 수 있습니다.

require('/path/to/global/node_modules/the_module');

맥에서는 다음을 사용합니다.

require('/usr/local/lib/node_modules/the_module');

글로벌 모듈이 어디에 있는지 어떻게 찾나요? --> npm은 패키지를 어디에 설치합니까?

환경 변수 NODE_PATH가 글로벌을 가리키도록 설정node_modules폴더.

Windows 7 이상에서 경로는 다음과 같습니다.%AppData%\npm\node_modulesUNIX에 있는 동안에는/home/sg/.npm_global/lib/node_modules/사용자 구성에 따라 다릅니다.

명령어npm config get prefix어떤 경로가 올바른지 알아내는 데 도움이 될 겁니다

UNIX 시스템에서는 다음 명령을 사용하여 이를 수행할 수 있습니다.

export NODE_PATH=`npm config get prefix`/lib/node_modules/

npm 글로벌 루트 디렉토리에서 노드를 실행하는 것이 쉬운 답입니다.

cd $( npm root -g ) && node

도커를 사용하고 있습니다.노드 종속성이 모두 설치되어 있지만 컨테이너 실행 시간에 로컬 앱 디렉터리를 사용할 수 있는 도커 이미지를 만들려고 합니다(node_modules 디렉터리 또는 링크로 오염시키지 않고).이 경우 문제가 발생합니다.제 해결 방법은 모듈에 ('/usr/local/lib/node_ modules/socket.io '이 필요한 정확한 경로를 요구하는 것입니다.

Windows cmd에 있는 경우 FOR /f "tokens=* delims=" %A('npm root --quiet -g') 집합 "NODE_PATH=%A" 또는 집합 "NODE_PATH=%A"('npm root --quiet -g') 집합 "NODE_PATH=%%A"의 FOR /f "tokens=* delims=" %A('npm root -- -- -g') 집합 "NODE_PATH=%A"를 통해 수행할 수 있습니다.A"를 배치 파일에 넣었습니다.

require.paths사용되지 않습니다.

프로젝트 폴더로 이동하여 입력

npm install socket.io

노드가 찾을 로컬 ./node_ modules 폴더에 설치해야 합니다.

나는 내 물건들을 이렇게 보관합니다.

cd ~/Sites/
mkdir sweetnodeproject
cd sweetnodeproject
npm install socket.io

app.js 파일 만들기

// app.js
var socket = require('socket.io')

이제 내 앱을 실행합니다.

node app.js

사용하고 있는지 확인합니다.npm >= 1.0그리고.node >= 4.0.

언급URL : https://stackoverflow.com/questions/7970793/how-do-i-import-global-modules-in-node-i-get-error-cannot-find-module-module