Ошибка: не удается найти модуль '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!')
})

файл 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"
  }
}

Когда я запускаю файл своего сервера, он показывает мне ошибку. на самом деле, я устанавливаю мопс и нефрит как модули npm:

Ошибка: не удается найти модуль 'pug'     в Function.Module._resolveFilename (module.js: 485: 15)     в Function.Module._load (module.js: 437: 25)     в Module.require(module.js: 513: 17)     по требованию (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)

Ответ 1

Попробуйте добавить эту строку

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

перед

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

Это решило ту же проблему для меня!

Ответ 2

При несоответствии установки модуля между Global и Local вы столкнетесь с этой проблемой, даже если вы установили все модули. Я бы предложил вам установить все локальное в проект, включив зависимость в package.json

npm install --save express jade pug

Ответ 3

в терминале в вашем проекте установите мопса так:

npm install --save экспресс-рули ejs pug

в 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"
  }

Ответ 4

Runnig: у меня работает npm install express

Я был забыт установить экспресс локально.

Также убедитесь, что вы установили мопса. (Запуск: npm я pug)


Больше объяснений:

В моей системе экспресс работает, даже если я не устанавливаю его локально (без npm install express). так что express не смог найти локальный модуль pug, потому что он работал откуда-то еще.

Обратите внимание, что если у вас есть выражение в ваших зависимостях, это не значит, что вы его установили. запустите npm install чтобы убедиться, что все зависимости установлены.

Ответ 6

У меня была эта проблема, когда я проводил мастерскую nodechool.io. Я посмотрел, где компилятор семинара искал модуль, и когда я вручную проверил /users/@yourUser/node_modules/<- (среда UNIX Mac), его не было. Установка Pug локально исправила проблему с npm install pug. В последних версиях Node нет необходимости добавлять флаг --save. Если вы хотите, чтобы модуль pug был добавлен в путь модулей узлов, просто укажите флаг -g после установки, например: npm install pug -g -g обозначает глобальный