错误:找不到模块'pug'

Har*_*tel 12 node.js pugjs pug

这是我的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!')
})
Run Code Online (Sandbox Code Playgroud)

index.pug文件:

html
  head
    title= title
  body
    h1= Hello
Run Code Online (Sandbox Code Playgroud)

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"
  }
}
Run Code Online (Sandbox Code Playgroud)

当我运行我的服务器文件时,它会显示一个错误.事实上,我安装了两个npm模块的pug和jade:

错误:无法在Module.require的Function.Module._load(module.js:437:25)的Function.Module._resolveFilename(module.js:485:15)中找到模块'pug'(module.js:513:17) )在function.render的新视图(/home/software/node_modules/express/lib/view.js:80:30)上的require(internal/module.js:11:18)(/ home/software/node_modules/express) /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)

Ser*_*dal 13

尝试添加此行

app.engine('pug', require('pug').__express)
Run Code Online (Sandbox Code Playgroud)

之前

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
Run Code Online (Sandbox Code Playgroud)

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

  • 我需要做的就是在package.json中的`dependencies`下添加`“ pug”:“ ^ 2.0.3` ... (2认同)

Gop*_*rma 10

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

npm install --save express jade pug
Run Code Online (Sandbox Code Playgroud)

  • 为什么要安装`jade`和`pug`?"玉"不是"帕格"的旧版本吗? (3认同)
  • @ aboveyou00我的理解是,由于商标纠纷,Jade不得不改名(改为Pug).我看不出安装它们的原因. (2认同)

小智 5

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


小智 5

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

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

对我有用。

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