Ошибка: не удается найти модуль 'http-errors' на локальном npm - PullRequest
0 голосов
/ 19 ноября 2018

У меня возникла проблема с пониманием того, как модуль разрешения узлов в локальной папке node_modules.Мое приложение использует модуль с именем http-errors, который является зависимостью в node_modules.Я использовал команду Powershell, чтобы подтвердить это

❯ npm ls --prod | Select-String -Pattern "http-errors"

| | +-- http-errors@1.6.3
| | | +-- http-errors@1.6.2
| | +-- http-errors@1.6.3

Почему у меня все еще есть ошибка при невозможности найти http-errors модуль?

Добавить: Это где мне нужно http-errors

const createError = require('http-errors');

function catchNotFound(_req, _res, next) {
  next(createError(404));
}

1 Ответ

0 голосов
/ 19 ноября 2018

Я понял, как node.js разрешает модули.Откройте сеанс REPL и введите

❯ node
> module.paths
[ 'C:\\Users\\truong\\Projects\\DDAC\\repl\\node_modules',
  'C:\\Users\\truong\\Projects\\DDAC\\node_modules',
  'C:\\Users\\truong\\Projects\\node_modules',
  'C:\\Users\\truong\\node_modules',
  'C:\\Users\\node_modules',
  'C:\\node_modules',
  'C:\\Users\\truong\\.node_modules',
  'C:\\Users\\truong\\.node_libraries',
  'C:\\Program Files\\nodejs\\lib\\node' ]
> require('http-errors')
Error: Cannot find module 'http-errors'
    at Function.Module._resolveFilename (module.js:536:15)
>

Node.js может разрешать только модули в этих путях.Даже у npm есть такая зависимость, но если нет имени каталога, точно такого же, как имя модуля, требование не может быть разрешено.Подробнее на этой статье .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...