Ответ 1
Попробуйте добавить эту строку
app.engine('pug', require('pug').__express)
перед
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', '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)
Попробуйте добавить эту строку
app.engine('pug', require('pug').__express)
перед
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
Это решило ту же проблему для меня!
При несоответствии установки модуля между Global и Local вы столкнетесь с этой проблемой, даже если вы установили все модули. Я бы предложил вам установить все локальное в проект, включив зависимость в package.json
npm install --save express jade pug
в терминале в вашем проекте установите мопса так:
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"
}
Runnig: у меня работает npm install express
Я был забыт установить экспресс локально.
Также убедитесь, что вы установили мопса. (Запуск: npm я pug
)
Больше объяснений:
В моей системе экспресс работает, даже если я не устанавливаю его локально (без npm install express
). так что express не смог найти локальный модуль pug, потому что он работал откуда-то еще.
Обратите внимание, что если у вас есть выражение в ваших зависимостях, это не значит, что вы его установили. запустите npm install
чтобы убедиться, что все зависимости установлены.
Переустановка мопса исправила это для меня:
yarn remove pug
yarn add pug
Спасибо Рону Ройстону за подсказку: Ошибка: Не удается найти модуль 'Мопс'
У меня была эта проблема, когда я проводил мастерскую nodechool.io. Я посмотрел, где компилятор семинара искал модуль, и когда я вручную проверил /users/@yourUser/node_modules/<- (среда UNIX Mac), его не было. Установка Pug локально исправила проблему с npm install pug. В последних версиях Node нет необходимости добавлять флаг --save. Если вы хотите, чтобы модуль pug был добавлен в путь модулей узлов, просто укажите флаг -g после установки, например: npm install pug -g -g обозначает глобальный