错误:找不到模块“哈巴狗”

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 重新安装 为什么要同时安装jadepugjade 不是 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,我就遇到了这个问题并意识到了我的问题。

【讨论】:

以上是关于错误:找不到模块“哈巴狗”的主要内容,如果未能解决你的问题,请参考以下文章

无法启动 Terminal Services 服务。错误 126: 找不到指定的模块。

错误找不到模块'@angular/material

解析错误:找不到模块'next/babel'

Phonegap 错误 + 错误:找不到模块 'q'

TypeOrm 迁移 - 错误:找不到模块

找不到名为“my”的模块。找不到名为“mycontroller”的控制器