19

这是我的 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 和 jam 两个 npm 模块:

错误:在 Module.require (module.js:513:17) 的 Function.Module._load (module.js:437:25) 的 Function.Module._resolveFilename (module.js:485:15) 中找不到模块“pug” ) 在 Function.render (/home/software/node_modules/express 的新视图 (/home/software/node_modules/express/lib/view.js:80:30) /lib/application.js:570:12) 在 ServerResponse.render (/home/software/node_modules/express/lib/response.js:971:7) 在 /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)

4

14 回答 14

23

尝试添加这一行

app.engine('pug', require('pug').__express)

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

这为我解决了同样的问题!

于 2017-09-27T07:02:16.593 回答
15

当全局和本地之间的模块安装不匹配时,即使您已经安装了所有模块,您也会遇到此问题。我建议您通过在 package.json 中包含依赖项来安装项目本地的所有内容

npm install --save express jade pug
于 2017-07-27T05:56:06.690 回答
5

最简单的解决方法是安装pug为开发依赖项:npm i -D pug

于 2019-12-09T14:44:35.340 回答
4

app.engine('pug', require('pug').__express)

app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'pug');

为我工作。

在我尝试了列出的不同方法之后。我的理解基于官方文档,express默认使用app.engine()函数,回调函数需要遵循'pug'模板的.__express语法。

于 2020-01-22T21:35:43.943 回答
3

Runnig:npm install express为我工作

我忘记在本地安装 express。

还要确保你安装了哈巴狗。(运行npm i pug:)


更多解释:

即使我没有在本地安装它(没有npm install express),在我的系统中也可以快速工作。所以 express 找不到本地 pug 模块,因为它是从其他地方运行的。

请注意,如果您的依赖项中有 express,这并不意味着您安装了它。运行npm install以确保安装了所有依赖项。

于 2019-05-23T13:48:40.573 回答
2

安装

npm i pug

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

app.set('views', path.join(__dirname, 'views'));
app.set('view engine','pug');


于 2020-07-22T13:48:52.947 回答
1

运行以下命令..

  1.npm remove pug express

  2.npm install pug express

这将解决问题

于 2020-05-15T09:56:22.180 回答
0

首先验证软件包 express 和 pug,如果您在笔记本电脑上打开了多项目,请确保未使用您使用的端口,因为我在更改端口号时收到此错误广告已修复。 const path = require('path') // you don't need to install it app.set('the folder that contain the pug file',path.join(__dirname,'the folder that contain the pug file'); app.set('view engine','pug')

于 2021-12-06T05:39:38.897 回答
0

在您项目的终端中,像这样安装哈巴狗:

npm install --save ejs pug express-handlebars

在 app.js 中表达

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"
  }
于 2019-01-12T21:55:00.247 回答
0

重新安装哈巴狗为我解决了这个问题:

yarn remove pug
yarn add pug

感谢 Ron Royston 的提示: 错误:找不到模块“哈巴狗”

于 2019-07-15T18:57:54.910 回答
0

在您的 package.json 中查看您的 express 和 pug 依赖项是否已安装如果未安装其中任何一个,则只需使用即可安装它们

npm i express

npm i pug 

你的问题将消除

于 2021-04-20T20:24:26.847 回答
0

如果你是为 Nodejs express 框架做的,这非常简单。您可以按照以下任何选项

  1. 如果你已经像添加 -g 一样全局安装了 pug,那么在你的项目中再次安装 pug 作为本地 npm install pug

  2. 如果第一个选项仍然不适合你,那么在你的 package.json 中添加以下行,就在依赖对象的“express”之后:“^4.17.1”。

“哈巴狗”:“^3.0.0”

对我来说,第一种方法很有效,因为如果您遵循第一种方法,那么第二种方法将自动完成。

请!如果它对您有用,请接受答案。

于 2020-12-27T21:57:01.743 回答
-1

我在做 nodeschool.io 研讨会时遇到了这个问题。我查看了研讨会的编译器在哪里寻找模块,当我手动检查 /users/@yourUser/node_modules/ <-(UNIX Mac 环境) 时,它丢失了。在本地安装 Pug 解决了npm install pug的问题。在 Node 的最新版本中,不需要添加 --save 标志。如果您想将 pug 模块添加到您的节点模块路径中,只需在安装后添加 -g 标志,例如:npm install pug -g -g 代表全局

于 2018-09-03T23:25:00.617 回答
-1

很多时候,即使一切都做对了,错误仍然发生只是因为在 'pug' 之后添加一个空格的小错误,即,

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

在检查您的代码时,这样的事情很容易被忽略。所以改为这样做。

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

由于我刚刚开始学习 express 和 pug,所以我遇到了这个问题并意识到了我的问题。

于 2021-05-13T07:19:29.857 回答