Ошибка: не удается найти модуль "мопс"
Вот мой файл 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 и jade оба модуля 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) в /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)
15 ответов
Попробуйте добавить эту строку
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
Самое простое решение - установить pug
как зависимость развития: npm i -D pug
Ставить app.engine('pug', require('pug').__express)
перед
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
работает для меня.
После того, как я попробовал разные перечисленные методы. Насколько я понимаю, на основе официального документа, express по умолчанию использует функцию app.engine(), где функция обратного вызова должна следовать синтаксису.__express специально для шаблона 'pug'.
Runnig: npm install express
работал на меня
Меня забыли установить экспресс локально.
Также убедитесь, что вы установили pug. (Пробег:npm i pug
)
Дополнительные объяснения:
В моей системе экспресс работает, даже если я не устанавливаю его локально (без npm install express
). поэтому express не смог найти локальный модуль мопса, потому что он работал откуда-то еще.
Обратите внимание: если в ваших зависимостях указано выражение express, это не означает, что вы его установили. пробегnpm install
чтобы убедиться, что все зависимости установлены.
Установить
npm i pug
Ставить
app.engine('pug', require('pug').__express);
перед
app.set('views', path.join(__dirname, 'views'));
app.set('view engine','pug');
Выполните следующие команды..
1.npm remove pug express
2.npm install pug express
Это решит проблему
Переустановка мопса исправила это для меня:
yarn remove pug
yarn add pug
Спасибо Рону Ройстону за подсказку: Ошибка: не удается найти модуль 'pug'
В терминале в вашем проекте установите мопса так:
npm install --save ejs pug express-handlebars
в 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"
}
Убедитесь, что оба (экспресс и мопс) указаны в качестве зависимостей в вашем package.json.
"dependencies": {
"esm": "^3.2.25",
"express": "^4.18.1",
"mysql2": "^2.3.3",
"pug": "^3.0.2",
"sequelize": "^6.21.2"
},
сначала проверьте пакет 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')
это очень просто, если вы делаете это для экспресс-фреймворка Nodejs. Вы можете выбрать любой из следующих вариантов
Если вы установили мопс глобально, например, добавив -g, то снова установите мопс в свой проект как локальный npm install pug
если первый вариант все еще не работает, добавьте следующую строку в свой package.json сразу после выражения «express»: «^ 4.17.1» в объекте зависимости.
"мопс": "^3.0.0"
Для меня первый метод сработал, потому что, если вы последуете первому методу, второй будет выполнен автоматически.
Пожалуйста! примите ответ, если он сработал для вас.
Посмотрите в своем package.json, что ваши экспресс-зависимости и зависимости от мопса были установлены или нет. Если какой-либо из них не установлен, установите их, просто используя
npm i express
npm i pug
И твою проблему уберут
Много раз, даже после того, как все было сделано правильно, ошибка все еще возникает только из-за крошечной ошибки добавления пробела после слова «мопс», т. Е.
app.set('view engine','pug ')
Такое можно легко упустить из виду при проверке кода. Так что сделай это вместо этого.
app.set('view engine','pug')
Поскольку я только начал изучать экспресс и мопс, я столкнулся с этой проблемой и понял свою проблему.
У меня была эта проблема, когда я проводил мастерскую nodechool.io. Я посмотрел, где компилятор семинара искал модуль, и когда я вручную проверил / users / @ yourUser / node_modules / <- (среда UNIX Mac), его не было. Установка Pug локально исправила проблему с npm install pug. В последних версиях Node необязательно добавлять флаг --save. Если вы хотите, чтобы модуль pug был добавлен в путь модулей узлов, просто укажите флаг -g после установки, например: npm install pug -g -g обозначает global