node.js - 错误 : Cannot find module 'ejs' even though it's listed in package. json

标签 node.js express package.json

当我尝试在我的 app.js 文件中调用路由时,我的应用程序没有加载“EJS”模块,我想知道为什么。

我的问题很similar in scope to this one ,但它还有一些额外的皱纹,在那里的答案中没有解决,所以我想我会把它完全变成一个新问题。

如果我像这样启动一个非常基本的 app.js 文件调用 ejs,它会按预期工作并且不会引发任何错误。

APP.JS:

var express = require('express');
var app = express();

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

app.get('/', function(req, res){
    res.send("Hello World");
    }).listen(3000, function(){
    console.log("The port is now listening at 3000");
  });

但是,一旦我修改 app.js 以使用路由来呈现 View ,我就会在标题中收到错误消息。

以下脚本提供了错误:

APP.JS:

var express = require('express');
var app = express();
var root = require('./routes/index');

app.set('view engine', 'ejs');
app.set('views', __dirname + '/views');
app.use(express.static(__dirname + '/public'));

app.use(root);

app.listen(3000, function(){
console.log("The port is now listening at 3000");
});

module.exports = app;

我用来建立路由的 index.js 文件如下所示:

INDEX.JS:

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res) {
res.render('index', {
  pageTitle: 'The Formula Generator',
  pageDescription: 'Easily manage and store your supplement formulas',
  pageID: 'home' });
});

module.exports = router;

EJS 已正确加载到我的 package.json 中,如下所示:

PACKAGE.JSON:

"dependencies": {
"body-parser": "~1.15.2",
"cookie-parser": "~1.4.3",
"debug": "~2.2.0",
"ejs": "^2.5.5",
"express": "~4.14.0",
"mongodb": "^2.2.16",
"monk": "^3.1.3",
"morgan": "~1.7.0",
"serve-favicon": "~2.3.0"
 },

它也安装在我的 node_modules 文件夹中。

我的文件结构目前是这样的:

enter image description here

最佳答案

app.js

var express = require('express');
var app = express();
var root = require('./routes/index');

app.set('view engine', 'ejs');
app.set('views', __dirname + '/views');
app.use(express.static(__dirname + '/public'));

root(app); // pass app to index

app.listen(3000, function(){
console.log("The port is now listening at 3000");
});

module.exports = app;

index.js

var controller = function(app){
    app.get('/', function(req, res) {
    res.render('index', {
      pageTitle: 'The Formula Generator',
      pageDescription: 'Easily manage and store your supplement formulas',
      pageID: 'home' });
    });
};
module.exports = controller;

package.json

{
  "name": "test",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "3.2.6",
    "ejs": "*"
  }
}

关于node.js - 错误 : Cannot find module 'ejs' even though it's listed in package. json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41400296/

相关文章:

javascript - 在 Firebase 云函数中哪里放置初始化代码?

node.js - 为什么我必须使用 "npm start x"启动某些脚本,而其他脚本仅使用 "npm x"启动?

node.js - 需要帮助部署使用 MongoDB Atlas 和 Express 创建的 RESTful API

node.js - express.js 中的路由器优先顺序

javascript - 如何检查数组是否包含至少一个对象?

javascript - 在另一个 jade 文件中访问从 Jade 文件传递​​的变量

node.js - 实用程序的依赖项是否会进入 devDependencies 中?

package.json - 从嵌套的 Lerna 包中删除依赖项

node.js - 在安装 npm 模块之前是否需要有 package.json 文件?

node.js - 何时在 Node REST API中使用rabbitMQ?