Lỗi: Không thể tìm thấy mô-đun 'ejs'


84

Đây là lỗi hoàn toàn của tôi:

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)

Mã nguồn của tôi cũng rất đơn giản:

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);

Trong thư mục của tôi, tôi đã cài đặt ejs trong node_modules mà tôi đã sử dụng npm install ejs. nhập mô tả hình ảnh ở đâyvì vậy câu hỏi của tôi là .. cái gì cho? Tôi đang làm gì sai để nút không thể tìm thấy EJS khi tôi đã cài đặt nó rõ ràng?

Cảm ơn


Xin lỗi nhưng lol @ tin nhắn: 'De groeten'
Rob

1
bạn đã cài đặt express trên toàn cầu? nếu tôi nhớ không nhầm thì tôi đã gặp sự cố khi cài đặt express trên toàn cầu và ejs cục bộ. cũng cố gắng cài đặt express trong thư mục dự án của bạn hoặc ejs trong thư mục mô-đun chung.
pkyeck

Tôi đã từng gặp vấn đề tương tự. Tôi đã kết thúc việc xóa thư mục node_modules và thực hiện cài đặt mới npm install -g.
Robert Walters

Câu trả lời:


148

Tôi đã gặp vấn đề chính xác này vài ngày trước và không thể tìm ra nó. Đã không được quản lý để khắc phục sự cố đúng cách nhưng cách này hoạt động như một bản sửa lỗi tạm thời:

Đi lên một cấp (trên app.js) và làm npm install ejs. Nó sẽ tạo một thư mục node_modules mới và Express sẽ tìm thấy mô-đun sau đó.


15
npm install ejs -gcó thể là một cách giải quyết tốt hơn. ( -gđể cài đặt toàn cầu)
Farzher

2
Trong khi triển khai ứng dụng của mình cho Openshift, tôi đã gặp phải lỗi tương tự và nhận thấy rằng tôi đã quên thêm phần phụ thuộc ejsvào packages.json. Bây giờ nó hoạt động tốt ( npm installđã được thực hiện tự động trong lần khởi động lại tiếp theo).
Bastien Jansen

1
Tôi không nghĩ rằng bạn muốn cài đặt một node_moduletoàn cầu, tôi đã làm điều tương tự trước và nó trở thành một nỗi đau khi bạn đang triển khai
pourmesomecode

1
Tôi chỉ cần thêm mô-đun 'express' làm phụ thuộc vào tệp 'package.json' của mình và nó bắt đầu hoạt động. Vì vậy, hãy đảm bảo rằng cả 'ejs' và 'express' đều được đề cập dưới dạng phụ thuộc.
Prateek

Rõ ràng, tôi đã ủng hộ câu trả lời chính (er) nhưng tôi cũng muốn ghi công cho @Stephen Bugs Kamenar vì đã đề xuất cài đặt toàn cầu (-g). Tôi thực sự đã lừa dối và làm cả hai (làm tôi lười biếng) và nó hoạt động ngay lập tức khi khởi động lại ứng dụng của tôi.
Ông Benedict

21

Cài đặt nhanh cục bộ

( npm install expresskhi ở trong thư mục gốc của dự án)


Dự án của bạn phụ thuộc vào cả hai expressejs, vì vậy bạn nên liệt kê cả hai như các phụ thuộc trong của bạn package.json.

Theo cách đó khi bạn chạy npm installtrong thư mục dự án của mình, nó sẽ cài đặt cả hai expressejs, vì vậy đó var express = require('express')sẽ là cài đặt cục bộ của express (biết về ejsmô-đun mà bạn đã cài đặt cục bộ) chứ không phải là cài đặt chung.

Nói chung, bạn nên liệt kê rõ ràng tất cả các phần phụ thuộc trong của mình package.jsonmặc dù một số phần trong số đó có thể đã được cài đặt toàn cầu, vì vậy bạn không gặp phải các loại vấn đề này.


9

Tôi gặp vấn đề tương tự. Khi tôi đặt biến môi trường NODE_PATH thành vị trí của các mô-đun của tôi (/usr/local/node-v0.8.4/node_modules trong trường hợp của tôi), sự cố đã biến mất. PS NODE_PATH chấp nhận một danh sách các thư mục được phân tách bằng dấu hai chấm nếu bạn cần chỉ định nhiều hơn một.


Điều này cực kỳ quan trọng và thường bị bỏ qua, +1 cho bạn Pete!
javabeangrinder

1
Tôi không có NODE_PATH env var, vì vậy một đơn giản export NODE_PATH=.đã làm việc cho dự án của tôi có các phụ thuộc của nó trong thư mục riêng của nó. Cheers
Greg

9

Tôi trường hợp của tôi, tôi chỉ thêm ej theo cách thủ công trong package.json :

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

Và chạy npm install (có thể bạn cần chạy nó với sudo ) Xin lưu ý rằng ejs trông thư mục views theo mặc định


6

Quay lại khi vấn đề tương tự xảy ra với tôi.

Sự phụ thuộc đã có đối với ejs trong tệp JSON, đã thử cài đặt nó cục bộ và toàn cầu nhưng không hoạt động.

Sau đó, những gì tôi đã làm là thêm mô-đun theo cách thủ công bằng cách:

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

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

Sau đó, nó hoạt động.


điều này đặc biệt đúng khi bạn có express như một phụ thuộc trong mô-đun con
user210504

Điều này làm cho nó [ejs] có thể được phát hiện khi biên dịch (hoặc chỉ đơn giản là đóng gói nếu không sử dụng typecript) máy chủ của bạn thông qua webpack. (Tuy nhiên, cần phải sao chép các chế độ xem sang bản phân phối hoặc làm việc thêm để nó hoạt động.)
Daniel

5

Tôi đã cài đặt ejsbằng lệnh npm install ejsở cấp thư mục express và điều này đã giải quyết được vấn đề của tôi.

tôi đã cài đặt express bằng các bước được đề cập trong hướng dẫn express http://expressjs.com/guide.html


4

Cài đặt nó cục bộ thay vì cài đặt nó trên toàn cầu. Sau đó, dự án của bạn có thể được chạy trên bất kỳ máy nào mà không có bất kỳ lỗi nào. Tôi nghĩ nó tốt hơn.

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

3

Tôi đã có vấn đề này. Tôi đã gỡ lỗi bằng cách sử dụng nút thanh tra và thấy rằng từ thư mục node_modules nơi chứa tệp nguồn express, ejs chưa được cài đặt. Vì vậy, tôi đã cài đặt nó ở đó và nó hoạt động.

npm install -g ejsđã không đặt nó ở nơi tôi mong đợi mặc dù NODE_PATH được đặt thành cùng một thư mục node_modules. Prob làm sai, chỉ bắt đầu với nút.


3

Tôi đã cài đặt cả: express và ejs với tùy chọn --save:

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

Theo cách này express và ejs là tệp tin package.json phụ thuộc.


3

Cài đặt lại npm, express và ejs đã khắc phục sự cố của tôi

Điều này đã làm việc cho tôi,

  1. Trên thiết bị đầu cuối hoặc cmd của bạn -> Đi tới thư mục ứng dụng của bạn,
  2. cd pathtoyourapp / AppName
  3. chạy lại 'cài đặt npm' của bạn
  4. chạy lại 'npm install express' của bạn
  5. chạy lại 'npm install ejs' của bạn

sau đó, lỗi đã được sửa.


3

Sau khi bạn đã cài đặt Express V xxx Bạn cần chọn một công cụ xem mẫu. Có rất nhiều cách thực sự dễ học. Mục tiêu cá nhân của tôi là EJS .

Thực sự tuyệt vời và dễ học khác có thể là:

Để cài đặt EJS (Và sửa lỗi của bạn) Chạy trong thư mục gốc của dự án của bạn:

npm install ejs

Hoặc nếu bạn đang sử dụng Yarn:

yarn add ejs

Tiếp theo, bạn sẽ cần phải yêu cầu mô-đun, vì vậy hãy mở tệp của bạn ở nơi bạn yêu cầu express (thường là app.js hoặc server.js)

thêm bên dưới var express = require('express');

var ejs = require('ejs');

3

Tôi đã từng gặp vấn đề tương tự. Vì vậy, tôi đã làm những điều sau đây và nó đã làm việc cho tôi.

giải pháp:

  1. chạy "npm init" trong thư mục dự án nếu chưa được thực hiện.
  2. cài đặt ejs và thể hiện như sau:

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

bằng cách làm như vậy, nó tạo ra các phụ thuộc bắt buộc trong tệp package.json


2

BƯỚC 1

Xem npm ls | grep ejsở cấp cơ sở của dự án của bạn để kiểm tra xem bạn đã thêm vào ejs dependencydự án của mình chưa.

Nếu không, hãy thêm nó dependenciesvào dự án của bạn. (Tôi thích thêm phụ thuộc vào package.jsonthay vì npm installnhập mô-đun.)

ví dụ.

{                                                                                                      
  "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"                                                                          
  }                                                                                                    
}   

BƯỚC 2 tải xuống các phụ thuộc

npm install

BƯỚC 3 kiểm tra mô-đun ejs

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

Tuyệt quá! Đã làm tất cả các cách trên nhưng không chạy lại cài đặt npm. Cảm ơn.
N. Osil

bạn đang nói npm installkhông hoạt động sau khi thêm "ejs": "^1.0.0"? Nếu vậy, hãy xóa dòng đó và cài đặt một cách khác với tên npm install ejs- npmjs.com/package/ejs . Nó sẽ thêm a ejs: latest versionvào package.json
Prayagupd

2

Thêm phụ thuộc vào package.jsonvà sau đó chạynpm install

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

2

Tôi nghĩ rằng công cụ mẫu ejs không được cài đặt đúng cách trên máy của bạn. Bạn chỉ cần cài đặt công cụ mẫu bằng npm

npm install ejs --save

sau đó đưa đoạn mã sau vào app.js

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

1

Tôi gặp vấn đề tương tự mà nó giải quyết sau khi cài đặt express trong thư mục dự án của tôi. trước đây tôi cài đặt nó trong phạm vi toàn cầu với tùy chọn -g với lệnh npm install.


1

Trong trường hợp của tôi, không có lỗi cú pháp ngớ ngẩn, nhưng lỗi tương tự đã phát sinh. Tôi đã cài đặt ejs và ejs-mate trên toàn cầu. Tôi đã cài đặt nó cục bộ và thấy lỗi của mình đã được giải quyết.


1

vui lòng đảm bảo rằng các phần phụ thuộc của bạn trong tệp package.json của bạn được cập nhật. Thử cài đặt lại lần lượt sau khi đảm bảo rằng NPM của bạn là phiên bản mới nhất (cập nhật). Nó đã làm việc cho tôi. Tôi khuyên bạn nên chạy npm installcác gói (đó là những gì đã hoạt động trong trường hợp của riêng tôi sau khi nó từ chối hoạt động vì tôi đã thêm các phần phụ thuộc theo cách thủ công).


1

Trong trường hợp của tôi, đó là một sai lầm ngu ngốc - đó là lỗi đánh máy trong phần mềm trung gian. Tôi đã viết app.set('view engine', 'ejs.');dấu chấm gây ra lỗi. Tôi đã cài đặt ej và express cục bộ


1

Đảm bảo tất cả các phụ thuộc được cài đặt. npm install

Tôi đang tạo một ứng dụng nhanh cho chính mình và tôi đã quên thêm express. Khắc phục lỗi trên.


1

Tôi gặp phải lỗi tương tự cho ejs, sau đó tôi chỉ chạy node install ejs Điều này sẽ cài đặt lại ejs.

và sau đó cũng chạy npm installđể cài đặt lại node_modules. Đó là công việc đối với tôi.


1

Tôi gặp sự cố này sau khi quên cài đặt ejs trước lần đầu tiên tôi chạy ứng dụng của mình. Vì một số lý do ejs đã không được nhìn thấy sau khi cài đặt nó sau đó. Tôi đã tìm thấy một giải pháp nhanh chóng, sạch sẽ và hiệu quả cho vấn đề này là cài đặt lại express bằng cách chạy npm uninstall expresssau đó npm install expresstrong thư mục cục bộ trước khi khởi động lại máy chủ.


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

và sau đó trong thiết bị đầu cuối

npm install ejs --save 

giải quyết vấn đề


0

Trong trường hợp của tôi, tôi chỉ cần gỡ cài đặt sau đó cài đặt lại ejs.

npm uninstall ejs

sau đó

npm install ejs

0

npm install ejs --saveđã làm cho tôi ! ✅

Trên goormIDE, tôi có cấu hình tệp này:

  • thùng đựng hàng
    • main.js
    • package-lock.json
    • package.json
    • node_modules
    • lượt xem
      • home.ejs

Trong tệp main.js của tôi, tôi cũng có tuyến đường này

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

npm install ejs -gđã không thêm phần phụ thuộc tương ứng trong package.json. npm install ejs --saveđã làm. Tôi đã thực hiện dòng lệnh từ thư mục vùng chứa. Nó có thể được thêm theo cách thủ công vào package.json với: **

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

**



0

Cài đặt express cục bộ đã giải quyết được vấn đề tương tự của tôi. npm i express --save


Chào mừng bạn đến với SO! Lý do tại sao và làm thế nào? Express được cài đặt cục bộ theo mặc định để phát triển.
peterh - Khôi phục Monica

0

tôi đã gặp vấn đề tương tự và đã thử một số giải pháp nhất định nhưng nó vẫn không hoạt động. tất cả những gì tôi đã làm là chạy lệnh "npx fiber" trong thư mục gốc của dự án và chỉ có vậy.


-1

Lỗi xảy ra với tôi khi tôi đang làm việc trên goormIDE. Điều này về cơ bản xảy ra khi các gói nút không nằm trong tệp đang chạy. Nơi mà app.js hoặc home.js được thực thi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.