这是我的index.js文件:
const express = require('express')
const app = express()
app.set('views', __dirname + '/views');
app.set('view engine', 'pug')
app.get('/', function (req, res) {
res.render('index', { title: 'Hey', message: 'Hello there!' })
})
app.listen(3333, function () {
console.log('Example app listening on port 3333!')
})
index.pug文件:
html
head
title= title
body
h1= Hello
package.json文件:
{
"name": "@npm-private/pug_with_node",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.15.3",
"jade": "^1.11.0",
"pug": "^2.0.0-rc.2"
}
}
当我运行我的服务器文件时,它会显示错误。事实上,我安装了pug和jade两个npm模块:
错误:找不到模块'pug' 在Function.Module._resolveFilename(module.js:485:15) 在Function.Module._load(module.js:437:25) 在Module.require(module.js:513:17) at require(internal / module.js:11:18) 在新视图(/home/software/node_modules/express/lib/view.js:80:30) 在Function.render(/home/software/node_modules/express/lib/application.js:570:12) 在ServerResponse.render(/home/software/node_modules/express/lib/response.js:971:7) at / home / software / Harsh Patel / pug_with_node / index.js:8:7 在Layer.handle [as handle_request](/home/software/node_modules/express/lib/router/layer.js:95:5) 在下一个(/home/software/node_modules/express/lib/router/route.js:137:13)
答案 0 :(得分:13)
尝试添加此行
app.engine('pug', require('pug').__express)
前
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
这为我解决了同样的问题!
答案 1 :(得分:7)
当全局和本地之间的模块安装不匹配时,即使已经安装了所有模块,也会遇到此问题。我建议你通过在package.json
中包含依赖项来安装项目的所有内容npm install --save express jade pug
答案 2 :(得分:3)
最简单的解决方法是将pug
安装为开发依赖项:npm i -D pug
答案 3 :(得分:2)
放入app.engine('pug', require('pug').__express)
之前
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
为我工作。
尝试了列出的其他方法之后。我基于official document(默认表示)的理解是使用app.engine()函数,其中回调函数需要特别针对'pug'模板遵循.__ express语法。
答案 4 :(得分:2)
安装
npm i pug
放入
app.engine('pug', require('pug').__express);
之前
app.set('views', path.join(__dirname, 'views'));
app.set('view engine','pug');
答案 5 :(得分:1)
运行以下命令。.
1.npm remove pug express
2.npm install pug express
这将解决问题
答案 6 :(得分:0)
在项目的终端中按以下方式安装帕格:
npm install-保存ejs pug express-handlebars
在app.js Express中
const app = express();
app.set('view engine', 'pug');
app.set('views', 'views');
package.json中的应该看起来像这样
"dependencies": {
"body-parser": "^1.18.3",
"ejs": "^2.6.1",
"express": "^4.16.4",
"express-handlebars": "^3.0.0",
"pug": "^2.0.3"
}
答案 7 :(得分:0)
Runnig:npm install express
为我工作
我忘记了在本地安装Express。
还要确保您安装了哈巴狗。 (运行:npm i pug
)
更多说明:
在我的系统中,即使我没有在本地安装Express作品(没有npm install express
)。因此express无法找到本地pug模块,因为它是在其他地方运行的。
请注意,如果您在依赖项中有表达,则并不意味着您已安装它。运行npm install
以确保已安装所有依赖项。
答案 8 :(得分:0)
答案 9 :(得分:0)
在 package.json 中查看是否安装了 express 和 pug 依赖项 如果其中任何一个未安装,则只需使用
npm i express
npm i pug
你的问题会消失
答案 10 :(得分:-1)
我在进行nodeschool.io研讨会时遇到了这个问题。我查看了研讨会的编译器在哪里寻找模块,当我手动检查/ users / @ yourUser / node_modules / <-(UNIX Mac环境)时,它丢失了。在本地安装Pug可以通过 npm install pug 解决此问题。在最新版本的Node中,不需要添加--save标志。如果要将pug模块添加到节点模块路径中,只需在安装后带有-g标志,例如: npm install pug -g -g代表全局
答案 11 :(得分:-1)
很多时候,即使一切都做对了,错误仍然发生,只是因为在 'pug' 后面加了一个空格,即,
app.set('view engine','pug ')
在检查代码时,这种事情很容易被忽视。所以改为这样做。
app.set('view engine','pug')
自从我刚刚开始学习 express 和 pug 以来,我遇到了这个问题并意识到了我的问题。