Here is my index.js file:
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 file:
html
head
title= title
body
h1= Hello
package.json file:
{
"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"
}
}
When I run my server file then it shows me an error. in fact, I install pug and jade both npm modules:
Error: Cannot find module ‘pug’
at Function.Module._resolveFilename (module.js:485:15)
at Function.Module._load (module.js:437:25)
at Module.require (module.js:513:17)
at require (internal/module.js:11:18)
at new View (/home/software/node_modules/express/lib/view.js:80:30)
at Function.render (/home/software/node_modules/express/lib/application.js:570:12)
at ServerResponse.render (/home/software/node_modules/express/lib/response.js:971:7)
at /home/software/Harsh Patel/pug_with_node/index.js:8:7
at Layer.handle [as handle_request] (/home/software/node_modules/express/lib/router/layer.js:95:5)
at next (/home/software/node_modules/express/lib/router/route.js:137:13)
Welcome to the Treehouse Community
The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.
I’m pretty fresh on this subject so I’m quite confused on the error message. Anyone now the issue?
1 Answer
scribbles June 27, 2019 4:35pm
Check your package.json file. If pug isn’t listed in the ‘dependencies’ or ‘devDependencies’ objects you can install it with:
if it is listed maybe you forgot to install the project dependencies when you downloaded the files. If your project doesn’t have a node_modules directory within it this is probably the case. You can install the needed dependencies with:
The dependencies part of package.json should look similar to this:
"dependencies": { "body-parser": "^1.17.1", "cookie-parser": "^1.4.3", "express": "^4.15.2", "pug": "^2.0.0-rc.1" }
Here is my index.js file:
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 file:
html
head
title= title
body
h1= Hello
package.json file:
{
"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"
}
}
When I run my server file then it shows me an error. in fact, I install pug and jade both npm modules:
Error: Cannot find module ‘pug’
at Function.Module._resolveFilename (module.js:485:15)
at Function.Module._load (module.js:437:25)
at Module.require (module.js:513:17)
at require (internal/module.js:11:18)
at new View (/home/software/node_modules/express/lib/view.js:80:30)
at Function.render (/home/software/node_modules/express/lib/application.js:570:12)
at ServerResponse.render (/home/software/node_modules/express/lib/response.js:971:7)
at /home/software/Harsh Patel/pug_with_node/index.js:8:7
at Layer.handle [as handle_request] (/home/software/node_modules/express/lib/router/layer.js:95:5)
at next (/home/software/node_modules/express/lib/router/route.js:137:13)
Вот мой файл 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
чтобы убедиться, что все зависимости установлены.
Ответ 5
Переустановка мопса исправила это для меня:
yarn remove pug
yarn add pug
Спасибо Рону Ройстону за подсказку: Ошибка: Не удается найти модуль ‘Мопс’
Ответ 6
У меня была эта проблема, когда я проводил мастерскую nodechool.io. Я посмотрел, где компилятор семинара искал модуль, и когда я вручную проверил /users/@yourUser/node_modules/<- (среда UNIX Mac), его не было. Установка Pug локально исправила проблему с npm install pug. В последних версиях Node нет необходимости добавлять флаг —save. Если вы хотите, чтобы модуль pug был добавлен в путь модулей узлов, просто укажите флаг -g после установки, например: npm install pug -g -g обозначает глобальный
В настоящее время я пытаюсь запустить шаблоны Pug с помощью плагина HTML Webpack. Я следовал их инструкциям, чтобы иметь возможность использовать пользовательский шаблонизатор, такой как Handlebars или в моем случае Pug. Когда я выполняю его, я получаю эту ошибку:
ERROR in ./~/html-webpack-plugin/lib/loader.js!./src/index.pug
Module build failed: Error: Cannot find module 'pug'
Мой текущий конфиг выглядит так:
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack');
const path = require('path');
module.exports = {
entry: {
global: './src/assets/scripts/global.js',
index: './src/assets/scripts/index.js',
},
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist/js'),
publicPath: '/assets/js/',
},
module: {
rules: [
{test: /.pug$/, use: 'pug-loader'},
],
},
plugins: [
new webpack.optimize.UglifyJsPlugin(),
new HtmlWebpackPlugin({
template: 'src/index.pug',
filename: 'index.html',
chunks: ['global', 'index'],
}),
],
};
Какие-либо предложения?
2 ответа
Лучший ответ
Мне пришлось вручную установить пакет pug
.
3
Simon Knittel
15 Июн 2017 в 12:59
Вы должны сделать это так. Вы можете добавить куски, если хотите.
new HtmlWebpackPlugin({
filename: 'index.html',
template: path.join(__dirname, './src/index.pug')
});
1
Mirza Andriamanamisoa
17 Янв 2019 в 07:33
If you’re a developer that works with Node JS and JavaScript libraries and frameworks like React, Vue, and Angular, then you might have encountered the «Error: cannot find module» error.
In this article, I’m going to show you how to fix the error.
Why the «Error: cannot find module» Occurs
This error occurs because of the following reasons:
- you’re trying to import an item from a module you don’t have installed in your project directory
- you’re importing some things from an outdated package
- you’re pointing to a file that does not exist
In the screenshot below, you can see that I’m getting the error:
I’m getting the error because I’m trying to import the freeCodeCamp icon from the react-icons package, which I don’t have installed.
import { FaFreeCodeCamp } from "react-icons/fa";
How to Fix the «cannot find module» Error
If you get this error, the solution is always in the error. The module (package) not found is always specified in the format «Module not found: Error: Can’t resolve ‘package name’ in ‘project directory».
In my case, I got it like this «Module not found: Error: Can’t resolve ‘react-icons/fa’ in ‘C:UsersuserDesktopProjectsAddress Locatoraddress-locatorsrc'».
To fix the error, you need to install the package that is absent in your project directory – npm install package-name
or yarn add package-name
.
In my case, I need to install the react-icons
package so the freeCodeCamp icon can be resolved. I’ll do that by running yarn add react-icons
.
Once I install the package and run the app, everything should successfully compile:
If you install the package but you still get the error, then follow the steps below:
- delete the node modules folder by running
rm -rf node_modules
- delete package.lock.json file by running
rm -f package-lock.json
- clean up the NPM cache by running
npm cache clean --force
- install all packages again by running
npm install
That should fix the error for you.
Conclusion
When you get the “cannot find module” error, or “module not found”, it means you’ve not installed the package you’re trying to use.
If the error occurs even if you have the package installed, then the fixes suggested in this article can help you out.
Thank you for reading.
Learn to code for free. freeCodeCamp’s open source curriculum has helped more than 40,000 people get jobs as developers. Get started