错误:找不到模块“哈巴狗”
Posted
技术标签:
【中文标题】错误:找不到模块“哈巴狗”【英文标题】:Error: Cannot find module 'pug' 【发布时间】:2018-01-02 16:22:54 【问题描述】:这是我的 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 模块:
错误:找不到模块“pug” 在 Function.Module._resolveFilename (module.js:485:15) 在 Function.Module._load (module.js:437:25) 在 Module.require (module.js:513:17) 在要求(内部/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) 在/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)
【问题讨论】:
你用什么命令来安装这两个模块? package.json 在哪里?你做了 npm install 确保你有pug
在 tour package.json 中
我的 package.json 中有哈巴狗
我也添加了 package.json 文件
【参考方案1】:
尝试添加这一行
app.engine('pug', require('pug').__express)
之前
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
这为我解决了同样的问题!
【讨论】:
不,我无法解释!我用 express & pug 做了更多的项目,我再也没有那个错误了。事实上,我不再使用 app.engine('pug', require('pug').__express) 这条线了。 我需要做的就是在dependencies
下添加"pug": "^2.0.3
package.json
...【参考方案2】:
当全局和本地之间的模块安装不匹配时,即使您已经安装了所有模块,您也会遇到此问题。我建议您通过在 package.json 中包含依赖项来安装项目本地的所有内容
npm install --save express jade pug
【讨论】:
但我在本地和全球使用相同的版本。 @HarshPatel 我建议您从 package.json 中删除“依赖项”并使用命令npm install --save express jade pug
重新安装
为什么要同时安装jade
和pug
? jade
不是 pug
的旧版本吗?
@aboveyou00 我的理解是,Jade 因商标纠纷不得不改名(改为 Pug)。我看不出同时安装它们的原因。
这个解决方案对我有用。赞成。 (我确实从命令行中排除了“jade”,但仍然......)【参考方案3】:
最简单的解决方法是安装pug
作为开发依赖项:npm i -D pug
【讨论】:
【参考方案4】:输入app.engine('pug', require('pug').__express)
之前
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
为我工作。
在我尝试了列出的不同方法之后。我的理解基于official document,默认情况下express使用app.engine()函数,回调函数需要遵循'pug'模板的.__express语法。
【讨论】:
【参考方案5】:Runnig:npm install express
为我工作
我忘记在本地安装 express。
还要确保您安装了 pug。 (运行:npm i pug
)
更多解释:
即使我没有在本地安装它(没有npm install express
),在我的系统中也可以快速工作。所以 express 找不到本地 pug 模块,因为它是从其他地方运行的。
请注意,如果您的依赖项中有 express,并不意味着您安装了它。运行npm install
以确保安装了所有依赖项。
【讨论】:
【参考方案6】:安装
npm i pug
放
app.engine('pug', require('pug').__express);
之前
app.set('views', path.join(__dirname, 'views'));
app.set('view engine','pug');
【讨论】:
这行得通@recherche-shafeeq,但请你解释一下为什么它需要它才能顺利运行?我在网上查了其他资源,但他们的解释不清楚 @Ekanem Eno 因为要运行 pug 代码,您需要首先安装 pug 引擎,就像将 nodejs 安装为 javascript 的运行时环境一样。请参阅 pug 文档以了解 pug 是什么 @987654321 @【参考方案7】:运行以下命令..
1.npm remove pug express
2.npm install pug express
这将解决问题
【讨论】:
【参考方案8】:在您项目的终端中,像这样安装哈巴狗:
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"
【讨论】:
【参考方案9】:重新安装哈巴狗为我解决了这个问题:
yarn remove pug
yarn add pug
感谢 Ron Royston 的提示:Error: Cannot find module 'pug'
【讨论】:
【参考方案10】:如果你是为 Nodejs express 框架做的,这很简单。您可以按照以下任何选项进行操作
如果你已经像添加 -g 一样全局安装了 pug,那么在你的项目中再次安装 pug 作为本地 npm install pug
如果第一个选项仍然不适合你,那么在你的 package.json 中添加以下行,就在依赖对象中的 "express": "^4.17.1" 之后。
“哈巴狗”:“^3.0.0”
对我来说,第一种方法有效,因为如果您遵循第一种方法,那么第二种方法将自动完成。
请!如果对您有用,请接受答案。
【讨论】:
【参考方案11】:在您的 package.json 中查看您的 express 和 pug 依赖项是否已安装 如果其中任何一个未安装,则只需使用即可安装它们
npm i express
npm i pug
你的问题会解决
【讨论】:
【参考方案12】:首先验证软件包 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')
【讨论】:
【参考方案13】:我在做 nodeschool.io 研讨会时遇到了这个问题。我查看了研讨会的编译器在哪里寻找模块,当我手动检查 /users/@yourUser/node_modules/ npm install pug 的问题。在 Node 的最新版本中,不需要添加 --save 标志。如果您想将 pug 模块添加到您的节点模块路径中,只需在安装后添加 -g 标志,例如:npm install pug -g -g 代表全局
【讨论】:
【参考方案14】:很多时候,即使一切都做对了,错误仍然发生只是因为在“pug”之后添加一个空格的小错误,即,
app.set('view engine','pug ')
在检查您的代码时,这样的事情很容易被忽略。所以改为这样做。
app.set('view engine','pug')
由于我刚开始学习express和pug,我就遇到了这个问题并意识到了我的问题。
【讨论】:
以上是关于错误:找不到模块“哈巴狗”的主要内容,如果未能解决你的问题,请参考以下文章