Module.js: 338 throw err in node.js
Я использую ubuntu, и я пытаюсь запустить script с помощью nodejs, и я получаю эту ошибку.
/home/bebz/Documents/test# node server.js
module.js:338
throw err;
^
Error: Cannot find module 'merge-descriptors'
at Function.Module._resolveFilename (module.js:336:15)
at Function.Module._load (module.js:278:25)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/home/bebz/node_modules/express/lib/express.js:6:13)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
В чем проблема? Я в правильном каталоге, и я попытался запустить его с помощью root, но ничего не происходит.
Внутри server.js находится
// get dependencies
var app = require("express")();
// handle request and response
app.get("/", function(req, res) {
res.send({name:"Hello Wolrd"});
});
// initializing a port
app.listen( 5000);
Простой пример, чтобы показать, что работает node.js.
Ответы
Ответ 1
Похоже, что script имеет неудовлетворенную зависимость - это означает, что вам нужно сначала установить "слияние-дескрипторы" модуля.
Похоже, что script использует "экспресс" (и "дескрипторы слияния" на самом деле выглядят как зависимость "экспресс" ) - потому что это не вызвало ошибку, некоторые зависимости, похоже, уже установлены.
Итак, вы можете попытаться установить отсутствующие через npm install
или npm update
.
Обновление: согласно npmjs.org "merge-descriptors" является зависимостью "express". Глядя на ваш стек, вы обнаружите, что у вас есть "экспресс" , установленный глобально, поэтому вы должны попробовать npm update -g
Если это не решит вашу проблему, вы должны взглянуть на этот вопрос.
Ответ 2
Обновление npm
Я вижу это, когда порядок установки модуля не идеален или существует несколько модулей.
Обновление npm сортирует это из-за устаревших версий.
Ответ 3
Всякий раз, когда вы получаете module.js:338 throw err;
Попробуйте проверить, установлен ли npm
на вашем компьютере или нет.
UserName$ npm -v
Если вы получаете название версии, то ясно, что npm
установлен.
Если вы не получили название версии, это означает, что у вас возникли проблемы с установкой или она не установлена.
Чтобы установить npm
, введите эту команду в своем терминале:
UserName$ curl -0 -L http://npmjs.org/install.sh | sudo sh
Также обратите внимание, что я добавил sudo
перед командой sudo sh
зависимости от разрешений ваших пользователей.
Ответ 4
Эта ошибка возникает, когда имя модуля и имя файла не совпадают. Он разрешен после использования того же имени для имени модуля и файла. например
module - Hello,
File name - Hello.js
Ответ 5
вы должны установить модуль слияния-дескрипторов. Откройте терминал или командную строку и выполните следующую команду:
npm install --save merge-descriptors
Ответ 6
У меня также возникла та же проблема, вы должны попробовать установить npm, также возможно обновление npm, но с обновлением npm последняя версия npm будет установлена в вашем локальном окружении. Это нежелательно для глобального проекта, так как тогда вы можете найти проблему неудовлетворенных зависимостей в глобальной среде.
Я бы предложил использовать npm install
Ответ 7
Привет, у меня тоже возникает такая же проблема, когда я пытаюсь развернуть свое приложение, и оно всегда не работает на ibm cloud ci/cd. У меня есть проблемы, что всегда есть некоторые модули, которые не найдены. Список модулей не найден (встречается один раз при установке предыдущего):
- depd
- слияния-дескрипторы
- finalhandler
- отлаживать
- encodeurl
- бежать-HTML
- радиоразведка
и т.д...
Это продолжается, но я не стал больше устанавливать недостающие пакеты npm.
{
"name": "MERN_1",
"version": "1.1.0",
"description": "MERN App",
"private": true,
"engines": {
"node": "^8.11.1"
},
"scripts": {
"start": "node server/server.js",
"debug": "nf --procfile Procfile-debug --port 3000 start",
"debug:legacy": "node --debug=0.0.0.0:5858 server/server.js",
"test": "nyc mocha --exit",
"dev": "nf --procfile Procfile-dev --port 3000 start",
"build": "webpack --progress --config webpack.prod.js",
"postinstall": "npm run build",
"lint": "eslint src",
"client-reload": "webpack-dev-server --host 0.0.0.0 --history-api-fallback --progress --inline --config webpack.dev-standalone.js",
"server-reload": "nodemon server/server.js"
},
"nodemonConfig": {
"env": {
"NODE_HEAPDUMP_OPTIONS": "nosignal"
}
},
"dependencies": {
"@material-ui/lab": "^4.0.0-alpha.23",
"@sendgrid/mail": "^6.4.0",
"bcrypt": "^3.0.6",
"body-parser": "^1.19.0",
"clone-deep": "^4.0.1",
"config": "^3.2.2",
"connect-mongo": "^1.3.2",
"dotenv": "^8.0.0",
"eslint": "^6.1.0",
"express": "^4.17.1",
"express-session": "^1.16.2",
"jsonwebtoken": "^8.5.1",
"log4js": "^3.0.5",
"moment": "^2.24.0",
"mongoose": "^4.13.19",
"request": "^2.88.0"
},
"devDependencies": {
"@babel/core": "^7.5.5",
"@babel/helper-create-class-features-plugin": "^7.5.5",
"@babel/plugin-proposal-class-properties": "^7.5.5",
"@babel/preset-env": "^7.5.5",
"@babel/preset-react": "^7.0.0",
"@material-ui/core": "^4.3.2",
"@material-ui/icons": "^4.1.0",
"array-move": "^2.1.0",
"axios": "^0.18.1",
"babel-loader": "^8.0.0",
"chai": "^4.0.0",
"copy-webpack-plugin": "^4.5.1",
"css-loader": "^3.2.0",
"foreman": "^3.0.1",
"history": "^4.9.0",
"html-webpack-plugin": "^3.2.0",
"mocha": "^5.2.0",
"node-sass": "^4.8.3",
"nodemon": "^1.12.1",
"nyc": "^14.1.1",
"react": "^16.9.0",
"react-dom": "^16.9.0",
"react-redux": "^6.0.1",
"react-router-dom": "^5.0.0",
"react-sortable-hoc": "^1.9.1",
"react-virtualized": "^9.21.1",
"redux": "^4.0.4",
"redux-thunk": "^2.3.0",
"sass-loader": "^7.2.0",
"style-loader": "^0.21.0",
"webpack": "^4.39.2",
"webpack-cli": "^3.3.6",
"webpack-dev-server": "^3.8.0",
"webpack-merge": "^4.1.1"
}
}
Когда я пытался протолкнуть точно такой же проект через набор инструментов ibm, используя консоль (например, git push), он говорит, что приложение не может быть развернуто, и при проверке журналов обнаружена ошибка, когда модуль не найден...
Когда я пытался выполнить push, используя вход в систему ibmcloud, target --cf и cf push, приложение было успешно отправлено. Я не уверен, откуда исходит ошибка.
Смотрите ниже файл manifest.yml:
applications:
- buildpacks: ['sdk-for-nodejs']
command: npm prune --production && NODE_ENV=production npm start
domain: null
env:
NPM_CONFIG_PRODUCTION: false
NODE_MODULES_CACHE: false
host: null
instances: 1
memory: 256M
name: mern_1
timeout: 360
domain: null
host: null
Я также попытался установить новый набор инструментов с той же конфигурацией проекта, но он также не удался.
Благодарен, если кто-нибудь может намекнуть мне это исправить?
Спасибо