오류 : 'ejs'모듈을 찾을 수 없습니다.


85

내 완전한 오류는 다음과 같습니다.

Error: Cannot find module 'ejs'
    at Function._resolveFilename (module.js:317:11)
    at Function._load (module.js:262:25)
    at require (module.js:346:19)
    at View.templateEngine (/Users/shamoon/local/node/lib/node_modules/express/lib/view/view.js:133:38)
    at Function.compile (/Users/shamoon/local/node/lib/node_modules/express/lib/view.js:65:17)
    at ServerResponse._render (/Users/shamoon/local/node/lib/node_modules/express/lib/view.js:414:18)
    at ServerResponse.render (/Users/shamoon/local/node/lib/node_modules/express/lib/view.js:315:17)
    at /Users/shamoon/Sites/soldhere.in/app.js:26:7
    at callbacks (/Users/shamoon/local/node/lib/node_modules/express/lib/router/index.js:272:11)
    at param (/Users/shamoon/local/node/lib/node_modules/express/lib/router/index.js:246:11)

내 소스 코드도 매우 간단합니다.

var express = require('express');

var app = module.exports = express.createServer();

// Configuration

app.configure(function(){
  app.use(express.bodyParser());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.set('view engine', 'ejs');
app.set('view options', {
    layout: false
});

app.get('/', function(req, res) {
  res.render('index', {
    message : 'De groeten'
  });
});

app.listen(3000);
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);

내 폴더에는 내가 사용하는 node_modules에 ejs가 설치되어 npm install ejs있습니다. 여기에 이미지 설명 입력그래서 내 질문은 .. 무엇을 제공합니까? 내가 명확하게 설치했을 때 노드가 EJS를 찾을 수 없도록 내가 뭘 잘못하고 있습니까?

감사


죄송하지만 LOL @ 메시지 : '드 groeten'

1
Express를 전 세계적으로 설치 했습니까? 내가 올바르게 기억한다면 Express를 전역으로 설치하고 로컬로 ejs를 설치할 때 문제가 발생했습니다. 프로젝트 폴더에 express를 설치하거나 전역 모듈 폴더에 ejs를 설치하십시오.
pkyeck

나는 같은 문제가 있었다. 결국 node_modules 디렉토리를 제거하고 npm install -g를 새로 설치했습니다.
Robert Walters

답변:


149

며칠 전에 똑같은 문제가 있었는데 알아낼 수 없었습니다. 문제를 제대로 해결하지 못했지만 임시 수정으로 작동합니다.

한 단계 (app.js 이상) 위로 이동하고 npm install ejs. 새 node_modules 폴더가 생성되고 Express가 모듈을 찾습니다.


15
npm install ejs -g더 깨끗한 해결 방법 일 수 있습니다. ( -g글로벌 설치용)
Farzher 2011

2
Openshift에 내 응용 프로그램을 배포하는 동안, 나는 같은 오류가 있었고, 나는에 종속성을 추가하는 것을 잊었다 발견 ejs에서 packages.json. 이제 잘 작동합니다 ( npm install다음 다시 시작할 때 자동으로 수행됨).
Bastien Jansen 2014 년

1
난 당신이를 설치하려는 거라고 생각하지 않습니다 node_module하기 전에, 내가 같은 일을했습니다 세계적으로 그리고 그것은 당신이 배포하는 고통이된다
pourmesomecode

1
단순히 'package.json'파일에 'express'모듈을 종속성으로 추가하고 작동하기 시작했습니다. 따라서 'ejs'와 'express'가 모두 종속성으로 언급되었는지 확인하십시오.
Prateek

분명히, 나는 주요 답변을 찬성했지만 (-g) 글로벌 설치를 제안한 @Stephen Bugs Kamenar에게도 감사를 표하고 싶었습니다. 나는 실제로 속임수를 썼고 (게으른 나에게) 내 앱을 다시 시작하자마자 즉시 작동했습니다.
씨 베네딕토

22

로컬로 Express 설치

( npm install express프로젝트의 루트 디렉토리에있는 동안)


프로젝트는 expressejs둘 다에 종속되므로 둘 다 package.json.

그런 식으로 npm install프로젝트 디렉토리에서 실행할 때 express및 둘 다 설치 ejs하므로 전역 설치가 아닌 Express var express = require('express')로컬 설치 ( 로컬로 설치 한 ejs모듈 에 대해 알고 있음)가됩니다.

일반적으로 package.json일부 종속성 이 이미 전역 적으로 설치되어 있어도 이러한 유형의 문제가 발생하지 않더라도 모든 종속성을 명시 적으로 나열하는 것이 좋습니다 .


9

나는 같은 문제가 있었다. 환경 변수 NODE_PATH를 내 모듈의 위치 (내 경우에는 /usr/local/node-v0.8.4/node_modules)로 설정하면 문제가 사라졌습니다. PS NODE_PATH는 둘 이상을 지정해야하는 경우 콜론으로 구분 된 디렉토리 목록을 허용합니다.


이것은 매우 중요하고 종종 놓친 것입니다. Pete에게 +1합니다!
javabeangrinder

1
NODE_PATH env var가 없었기 때문에 export NODE_PATH=.자체 디렉토리 아래에 종속성이있는 프로젝트 에서 간단한 작업이 수행되었습니다. 건배
Greg

9

제 경우에는 package.json에 수동으로 ejs를 추가했습니다 .

 {
   "name": "myApp"
   "dependencies": {
     "express": "^4.12.2",
     "ejs": "^1.0.0"
   }
 }

그리고 npm install을 실행하십시오 ( sudo로 실행해야 할 수도 있습니다 ) ejs는 기본적으로 뷰 디렉토리를 찾습니다.


6

나에게 같은 문제가 발생했을 때로 돌아갑니다.

JSON 파일의 ejs에 대한 종속성이 있었으며 로컬 및 글로벌 설치를 시도했지만 작동하지 않았습니다.

그런 다음 내가 한 일은 수동으로 모듈을 추가하는 것입니다.

app.set('view engine','ejs'); 

app.engine('ejs', require('ejs').__express);

그런 다음 작동합니다.


이것은 하위 모듈에서 종속성으로 표현할 때 특히 그렇습니다
user210504

이렇게하면 웹팩을 통해 서버를 컴파일 (또는 타이프 스크립트를 사용하지 않는 경우 간단히 번들링) 할 때 [ejs] 발견 할 수 있습니다. (보기를 dist로 복사하거나 작동하려면 추가 작업이 필요합니다.)
Daniel


4

전체적으로 설치하는 대신 로컬로 설치하십시오. 그러면 프로젝트가 오류없이 모든 컴퓨터에서 실행될 수 있습니다.

npm install express --save
npm install ejs --save

3

나는이 문제가 있었다. node-inspector를 사용하여 디버깅 한 결과 익스프레스 소스 파일이있는 node_modules 폴더에서 ejs가 설치되지 않았 음을 확인했습니다. 그래서 거기에 설치했고 작동했습니다.

npm install -g ejsNODE_PATH가 동일한 node_modules 폴더로 설정되어 있음에도 불구하고 예상했던 곳에 넣지 않았습니다. Prob가 잘못하고 있습니다. 노드로 시작했습니다.


3

--save 옵션을 사용하여 express와 ejs를 모두 설치했습니다.

npm install ejs --save npm install express --save

이런 식으로 express 및 ejs는 package.json 파일에 종속됩니다.


3

npm, express 및 ejs를 다시 설치하면 문제가 해결되었습니다.

이것은 나를 위해 일했습니다.

  1. 터미널 또는 cmd-> 앱 디렉토리로 이동하십시오.
  2. cd pathtoyourapp / AppName
  3. 'npm 설치'를 다시 실행하십시오.
  4. 'npm install express'를 다시 실행하십시오.
  5. 'npm install ejs'를 다시 실행하십시오.

그 후 오류가 수정되었습니다.


3

Express V xxx를 설치 한 후 템플릿보기 엔진을 선택해야합니다. 정말 배우기 쉬운 것이 많이 있습니다. 내 개인적인 이동은 EJS 입니다.

정말 훌륭하고 배우기 쉬운 다른 것들은 다음과 같습니다.

EJS를 설치하려면 (오류 수정) 프로젝트의 루트에서 실행합니다.

npm install ejs

또는 Yarn을 사용하는 경우 :

yarn add ejs

다음으로 모듈이 필요하므로 Express가 필요한 위치 (일반적으로 app.js 또는 server.js)에서 파일을 엽니 다.

아래에 추가 var express = require('express');

var ejs = require('ejs');

3

나는 같은 문제가 있었다. 그래서 나는 다음을했고 그것은 나를 위해 일했습니다.

해결책:

  1. 아직 수행하지 않은 경우 프로젝트 디렉토리에서 "npm init"를 실행하십시오.
  2. ejs를 설치하고 다음과 같이 표현하십시오.

npm install ejs --save
npm install express --save

이렇게하면 package.json 파일에 필요한 종속성이 생성됩니다.


2

1 단계

참조 npm ls | grep ejs이미 추가 한 경우 확인하기 위해 프로젝트의 루트 레벨에 ejs dependency프로젝트에.

그렇지 않은 경우 dependencies프로젝트에 추가하십시오 . ( 모듈 package.json대신에 종속성을 추가하는 것을 선호 npm install합니다.)

예.

{                                                                                                      
  "name": "musicpedia",                                                                                
  "version": "0.0.0",                                                                                  
  "private": true,                                                                                     
  "scripts": {                                                                                         
    "start": "node ./bin/www"                                                                          
  },                                                                                                   
  "dependencies": {                                                                                    
    "body-parser": "~1.15.1",                                                                          
    "cookie-parser": "~1.4.3",                                                                         
    "debug": "~2.2.0",                                                                                 
    "express": "~4.13.4",                                                                              
    "jade": "~1.11.0",                                                                                 
    "ejs": "^1.0.0",                                                                                                                                                            
    "morgan": "~1.7.0",                                                                                
    "serve-favicon": "~2.3.0"                                                                          
  }                                                                                                    
}   

2 단계 종속성 다운로드

npm install

STEP 3 EJS 모듈 확인

$ npm ls | grep ejs
musicpedia@0.0.0 /Users/prayagupd/nodejs-fkers/musicpedia
├── ejs@1.0.0

큰! 위의 모든 작업을 수행했지만 npm 설치를 다시 실행하지 않았습니다. 감사.
N. Osil

당신은 말을 npm install추가 한 후 작동하지 않았다 "ejs": "^1.0.0"? 그렇다면, 그 줄을 제거하고 다른 방법으로 설치 npm install ejs- npmjs.com/package/ejs을 . ejs: latest versionpackage.json 에 a 를 추가해야합니다
prayagupd

2

종속성을 추가 package.json한 다음 실행npm install

    {
  ...
  ... 
  "dependencies": {
    "express": "*",
    "ejs": "*",
  }
}

2

ejs 템플릿 엔진이 컴퓨터에 제대로 설치되지 않은 것 같습니다. npm을 사용하여 템플릿 엔진을 설치하기 만하면됩니다.

npm install ejs --save

그런 다음 app.js에 다음 코드를 포함하십시오.

app.set('view engine', 'ejs')

1

내 프로젝트 디렉토리에 Express를 설치 한 후에도 동일한 문제가 해결되었습니다. 이전에 npm install 명령으로 -g 옵션을 사용하여 전역 범위에 설치했습니다.


1

제 경우에는 어리석은 구문 오류가 없었지만 동일한 오류가 발생했습니다. 전 세계적으로 ejs와 ejs-mate를 설치했습니다. 로컬에 설치했고 내 오류가 해결되었음을 알았습니다.


1

package.json 파일의 종속성이 최신 상태인지 확인하십시오. NPM이 최신 버전 (최신 버전)인지 확인한 후 한 번에 하나씩 다시 설치해보십시오. 그것은 나를 위해 일했습니다. 나는 당신 npm install이 패키지 를 위해 실행 하는 것이 좋습니다 (내가 의존성을 수동으로 추가했기 때문에 작동을 거부 한 후 내 경우에는 작동했습니다).


1

제 경우에는 어리석은 실수였습니다. 미들웨어의 오타였습니다. 나는 app.set('view engine', 'ejs.');점을 썼다 가 오류를 일으켰다. ejs를 설치하고 로컬로 표현했습니다.


1

모든 종속성이 설치되었는지 확인하십시오. npm install

나는 나 자신을 위해 빠른 앱을 만들고 있었고 Express를 추가하는 것을 잊었습니다. 위의 오류를 던졌습니다.


1

ejs에 대해 동일한 오류가 발생하면 node install ejs This will install ejs again.

그런 다음 npm installnode_modules를 다시 설치하기 위해 실행 하십시오. 그것은 나를위한 일입니다.


1

앱을 처음 실행하기 전에 ejs를 설치하는 것을 잊은 후이 문제가 발생했습니다. 어떤 이유로 나중에 설치 한 후 ejs가 표시되지 않았습니다. 나는 실행하여 표현 다시 설치하는 것이 었습니다이 문제에 대한 빠르고 깨끗하고 효과적인 솔루션을 발견 npm uninstall express한 후 npm install express서버를 다시 시작하기 전에 로컬 디렉토리에 있습니다.


0
app.set('view engine', 'ejs')

그리고 터미널에서

npm install ejs --save 

문제를 해결합니다



0

npm install ejs --save나를 위해 일했다! ✅

goormIDE에서는 다음과 같은 파일 구성이 있습니다.

  • 컨테이너
    • main.js
    • package-lock.json
    • package.json
    • node_modules
    • 견해
      • home.ejs

내 main.js 파일에는이 경로도 있습니다.

app.get("/", function(req, res){
res.render("home.ejs");
})

npm install ejs -gpackage.json 내에 해당 종속성을 추가하지 않았습니다. npm install ejs --save했다. 컨테이너 디렉터리에서 명령 줄을 실행했습니다. 수동으로 package.json에 다음과 같이 추가 할 수 있습니다. **

"dependencies": {
    "ejs": "^3.0.2",}

**



0

Express를 로컬로 설치하면 동일한 문제가 해결되었습니다. npm i express --save


SO에 오신 것을 환영합니다! 왜 그리고 어떻게? Express는 기본적으로 개발을 위해 로컬로 설치됩니다.
peterh-Monica 복원

0

나는 같은 문제가 있었고 주어진 솔루션 중 몇 가지를 시도했지만 여전히 작동하지 않았습니다. 내가 한 것은 내 프로젝트의 루트 폴더에서 "npx yarn"명령을 실행하는 것이 었습니다.


-1

구름 IDE에서 작업 할 때 오류가 발생했습니다. 이것은 기본적으로 노드 패키지가 실행중인 파일 내에 없을 때 발생합니다. app.js 또는 home.js가 실행되는 위치입니다.

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