Ошибка: не удается найти модуль "мопс"

Вот мой файл 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. Вы можете выбрать любой из следующих вариантов

  1. Если вы установили мопс глобально, например, добавив -g, то снова установите мопс в свой проект как локальный npm install pug

  2. если первый вариант все еще не работает, добавьте следующую строку в свой 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

Другие вопросы по тегам