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. У меня есть проблемы, что всегда есть некоторые модули, которые не найдены. Список модулей не найден (встречается один раз при установке предыдущего):

  1. depd
  2. слияния-дескрипторы
  3. finalhandler
  4. отлаживать
  5. encodeurl
  6. бежать-HTML
  7. радиоразведка и т.д...

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

Я также попытался установить новый набор инструментов с той же конфигурацией проекта, но он также не удался.

Благодарен, если кто-нибудь может намекнуть мне это исправить?

Спасибо