Node.js 오류 : Express 모듈을 찾을 수 없습니다


145

첫 번째 node.js 앱을 작성했지만 Express 라이브러리를 찾을 수 없습니다.

C:\ChatServer\Server>node server.js

module.js:340
    throw err;
          ^
Error: Cannot find module 'express'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (C:\ChatServer\Server\server.js:6:9)
    at Object.<anonymous> (C:\ChatServer\Server\server.js:25:4)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

그러나 express는 -g키로 묶여 있습니다 .

C:\ChatServer\Server>npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/connect/2.7.11
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.4
npm http GET https://registry.npmjs.org/cookie/0.1.0
npm http GET https://registry.npmjs.org/buffer-crc32/0.2.1
npm http GET https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/methods/0.0.1
npm http GET https://registry.npmjs.org/send/0.1.0
npm http GET https://registry.npmjs.org/cookie-signature/1.0.1
npm http GET https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/mkdirp/0.3.4
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/cookie/0.1.0
npm http 304 https://registry.npmjs.org/connect/2.7.11
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm WARN package.json range-parser@0.0.4 No repository field.
npm http 304 https://registry.npmjs.org/buffer-crc32/0.2.1
npm http 304 https://registry.npmjs.org/fresh/0.1.0
npm http 304 https://registry.npmjs.org/methods/0.0.1
npm http 304 https://registry.npmjs.org/send/0.1.0
npm http 304 https://registry.npmjs.org/cookie-signature/1.0.1
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json methods@0.0.1 No readme data.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm http 304 https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/mime/1.2.6
npm http GET https://registry.npmjs.org/qs/0.6.5
npm http GET https://registry.npmjs.org/send/0.1.1
npm http GET https://registry.npmjs.org/formidable/1.0.14
npm http GET https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/bytes/0.2.0
npm http GET https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/mime/1.2.6
npm http 304 https://registry.npmjs.org/bytes/0.2.0
npm WARN package.json bytes@0.2.0 No repository field.
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm WARN package.json pause@0.0.1 No repository field.
npm http 304 https://registry.npmjs.org/formidable/1.0.14
npm http 304 https://registry.npmjs.org/qs/0.6.5
npm http 304 https://registry.npmjs.org/send/0.1.1
npm http 304 https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/mime
C:\Users\Dmitry\AppData\Roaming\npm\express -> C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express\bin\express
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
express@3.2.6 C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
├── methods@0.0.1
├── fresh@0.1.0
├── range-parser@0.0.4
├── cookie-signature@1.0.1
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── debug@0.7.2
├── commander@0.6.1
├── mkdirp@0.3.4
├── send@0.1.0 (mime@1.2.6)
└── connect@2.7.11 (pause@0.0.1, qs@0.6.5, bytes@0.2.0, cookie@0.0.5, formidable@1.0.14, send@0.1.1)

몇몇 정보:

C:\ChatServer\Server>npm --version
1.2.24

C:\ChatServer\Server>node --version
v0.10.9

C:\ChatServer\Server>npm --version
1.2.24

C:\ChatServer\Server>npm ls -g installed express
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json range-parser@0.0.4 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json bytes@0.2.0 No repository field.
npm WARN package.json pause@0.0.1 No repository field.
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
C:\Users\Dmitry\AppData\Roaming\npm
└── express@3.2.6


C:\ChatServer\Server>npm ls installed express
C:\ChatServer\Server
└── (empty)

이 문제를 어떻게 해결할 수 있습니까? ( 없이 설치 해야-g 합니까?)




답변:


275

응용 프로그램 ( node_modules폴더) 컨텍스트에 Express를 로컬로 설치해야합니다 .

$ npm install express

그 이유는 응용 프로그램이 항상 로컬 컨텍스트에서 종속성을 확인하기 때문입니다. 전역 설치는 유닛 테스트 러너 또는 부트 스트 래퍼와 같은 시스템 전체의 사용 가능한 바이너리를 설정하기위한 것입니다.

Express를 사용하면 전역으로 설치할 때 express응용 프로그램을 부트 스트랩 할 수있는 바이너리가 제공됩니다. 자세한 내용을 보려면

$ express --help

따라서 최종 질문에 대답 하려면 YES 없이 설치해야합니다 -g.


1
이것은 나에게도 도움이되었습니다. 나는했다 winston가 작동하지 않을 init 스크립트 내 응용 프로그램과 시스템을 시작할 때 일반 사용자로 내 응용 프로그램을 시작하지만, 때 어떤 이유로 일을하는, 전 세계적으로 설치되어 있어야합니다. 앱 디렉토리에 winston을 로컬로 설치하고 package.json에 추가하여 문제를 해결했습니다.
trusktr

3
cd로 전역 설치 종속성을 프로젝트 루트 디렉토리에 링크 한 다음 "npm link <일부 종속성 이름>"을 사용하십시오.
khoi nguyen

11
앱을 만든 후 npm 설치 모든 의존성을 설치합니다.

정말 도움이되었습니다. node_modules 폴더로 이동하고 express를 설치하는 것보다 내 문제가 해결되었습니다.
Megha

@ Golo Roden 귀하의 답변을 인코딩하여 솔루션으로 시도했지만 오류가 발생합니다 : 'npm ERR! tar.unpack untar 오류 C : \ Users \ VV \ AppData \ Roaming \ npm-cache \ express \ 4.14.0 \ package.tgz npm ERR! Windows_NT 6.3.9600 npm ERR! argv "C : \\ Program Files \\ nodejs \\\\ node.exe" "C : \\ Program Files \\ nodejs \\ node_modules \\ npm \\ bin \\ npm-cli.js" "install" " express "
VjyV

20

나를 위해 --save 옵션을 사용하여 로컬로 명시 적으로 설치하면 다음과 같이 작동했습니다.

$ npm install express --save

12

express모듈을 설치하지 않았는지 확인 하려면 다음 명령을 사용하십시오.

 npm install express

node_modules디렉토리가 다른 곳에 있으면 NODE_PATH환경 변수를 설정 하십시오.

 set NODE_PATH=your\directory\to\node_modules;%NODE_PATH%

npm install express 이후 Windows 10에서는 노드 경로에 자동으로 추가 할 수 없으므로 노드 모듈을 수동으로 추가해야합니다.
Jane

5

Golo는 해결책을 잘 설명했지만 설명을 추가 할 수 있습니다.
때로는 노드 모듈이 설치되어 있습니다.

/usr/local/lib/node_modules

노드를 시작하면 blabla.js 모듈이 검색됩니다.

/lib

따라서 해결책은 심볼릭 링크를 만드는 것입니다.

sudo ln -s /usr/local/lib/node_modules/ /lib/node_modules

1
더 쉬운 방법-> npm link <module>
Amit G

4

귀하의 경우 express모듈이에 설치되어 C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express있지만이 모듈을 프로젝트 디렉토리로 가져와야합니다. 따라서 express모듈 폴더 의 파일 C:\Users\Dmitry\AppData\Roaming\npm\node_modules\을 다음과 같이 프로젝트 디렉토리에 복사해야합니다 C:\ChatServer\Server\node_modules. 프로젝트 폴더에 'node_modules'라는 폴더가없는 경우 먼저 폴더를 작성하고 해당 파일을이 폴더에 붙여 넣으십시오. 이 방법은 Windows PC에서 저에게 효과적이었습니다. 노드 서버를 다시 시작하고 명령 노드를 다시 한 번 실행하십시오 C:\ChatServer\Server>node server.js. 이제 작동합니다 !!!!


창문 10에서도 일했습니다!
Victor Michael Kosgei


3

시스템에 노드 를 설치했으면 Windows의 경우 다음을 사용하여 프로젝트에 대해 Express를 로컬로 설치하십시오.

npm install express

또는

npm install express --save

다음을 사용하여 글로벌 액세스 권한을 부여 할 수 있습니다.

npm install -g express --save

2

모듈이 설치된 위치에도 불구하고 vscode 에서이 오류가 발생했습니다. 나는 typescript를 사용하고 표현하고 있습니다. 에서 server.ts파일의 모든 수입은 구불 구불 한 밑줄 빨간색했다. tsconfig.json파일 에 결함이있는 것으로 나타났습니다 .

{
    "compileOnSave": false,
    "compilerOptions": {
        "module": "commonjs", // Previously this value was `es6`
        "target": "es6",
        "allowSyntheticDefaultImports": true,
        "baseUrl": "public",
        "sourceMap": true,
        "outDir": "dist",
        "jsx": "react",
        "strict": true,
        "preserveConstEnums": true,
        "removeComments": true,
        "noImplicitAny": true,
        "allowJs": true
    },
    "exclude": [
        "node_modules",
        "build"
    ]
}

1

하드 디스크에 하나의 폴더 (예 : sample1)를 만들고 명령 프롬프트 type : cd로 이동 한 다음 sample1 폴더의 경로를 제공하고 모든 모듈을 설치하십시오 ...

npm 설치 익스프레스

NPM 설치 옥

npm 설치 socket.io

그런 다음 응용 프로그램을 만들 때마다 sample1 폴더에 저장하십시오.

시도 해봐...


1

응용 프로그램 디렉토리로 이동하여 아래 명령 npm install express --save 를 사용하여 Express 모듈을 설치 한 다음 아래 명령 npm ls 를 사용하여 모든 설치 모듈을 나열하면 모든 로컬 설치 모듈이 표시됩니다.


1

전역 프로젝트를 설치하면 로컬 프로젝트에서 작동하지 않으므로 사용하려면 로컬로 설치해야합니다.

npm install express

이것이 효과가 있기를 바랍니다.

감사합니다


0

나는 같은 문제에 부딪쳤다. 전 세계적으로 / usr / local / bin /에 Express를 설치했습니다. 'npm install'을 수행하면 로컬 디렉토리의 node_modules에 express가 작성되지 않았습니다.

  1. $ HOME에 파일 이름이 .npmrc인지 확인하십시오.
  2. 'global = true'인 경우 'global = false'로 변경하십시오.
  3. 이제 응용 프로그램 디렉토리에서 'npm install'을 수행하십시오. 아마도 모든 패키지 종속 모듈을 응용 프로그램 디렉토리 내의 node_modules (로컬)에 설치해야합니다.

0
  • sudo brew 제거 노드
  • 양조 업데이트
  • 양조 업그레이드
  • 양조 정리
  • 양조 설치 노드
  • sudo chown -R $ (whoami) / usr / local
  • 추출 링크-덮어 쓰기 노드
  • sudo brew 사후 설치 노드

이것은 MacOS X Sierra 에서 나를 위해 일했습니다.


0

나는 이것을 공유하는 것을 자랑스럽게 생각하지 않지만 제 경우에는 다음과 같은 것이 있습니다.

 require('express.handlebars')

 //and the correct form is:
 require('express-handlebars'); //Use dash instead.

0

이 책의 예제 "Kubernetes Up & Running"과 동일한 오류가 발생했습니다. "직접 손으로" 표현할
것을 제안하는 많은 답변이 있지만 최고의 솔루션이라고 확신하지는 않습니다. 우리는 package.json (로그에서 볼 수 있음)을 사용하고 있으며 앱을 빌드하는 올바른 방법이 실행 중이므로 package.json 파일 에 명시 적 종속성을 추가했습니다 .
npm install

 "dependencies": {
    "express": "^4.17.1"
}

로 현재 버전을 얻습니다 npm search express.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.