Как устранить ошибку «Не удается найти модуль» с помощью Node.js? - PullRequest
519 голосов
/ 26 января 2012

После извлечения модуля из GitHub и следуя инструкциям по его сборке, я пытаюсь вытянуть его в существующий проект, используя:

> npm install ../faye

Похоже, это помогает:

> npm list
/home/dave/src/server
└─┬ faye@0.7.1
  ├── cookiejar@1.3.0
  ├── hiredis@0.1.13
  └── redis@0.7.1

Но Node.js не может найти модуль:

> node app.js
node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: Cannot find module 'faye'
    at Function._resolveFilename (module.js:334:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at Object.<anonymous> (/home/dave/src/server/app.js:2:12)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:470:10)

Я действительно хочу понять, что здесь происходит, но я немного растерялся относительно того, где искать дальше,Есть предложения?

Ответы [ 26 ]

4 голосов
/ 25 августа 2016

Я столкнулся с этой ошибкой вчера.Мне потребовалось время, чтобы понять, что запись main в package.json указывает на файл, который я переместил.Как только я обновил, что ошибка исчезла, и пакет работал.

3 голосов
/ 23 июня 2017

Эта ошибка может возникать, если вы require используете модуль, в котором отсутствует или неверно указано поле main в файле package.json.Хотя сам модуль установлен, npm / node должен использовать один файл .js в качестве точки входа в ваш модуль.Если поле main отсутствует, по умолчанию он ищет index.js в папке вашего модуля.Если основной файл вашего модуля не и называется index.js, он не сможет require его.

Обнаружить при превращении модуля на основе browserify в CommonJS *Модуль 1011 *;browserify не заботилось о пропавшем поле main, поэтому ошибка осталась незамеченной.

2 голосов
/ 06 сентября 2016

PRO TIP:

Эта ошибка произошла со мной во время борьбы с усталостью и легкой болезнью, потому что я набрал node blah вместо npm blah.

Полученное сообщение об ошибке было недостаточно сердитым, чтобы предупредить меня о моей собственной глупости!

1 голос
/ 10 июля 2017

Я могу добавить еще одно место для проверки;пакет, который я пытался использовать, был еще одним из моих собственных пакетов, которые я опубликовал для частного репозитория NPM.Я забыл правильно настроить свойство 'main' в package.json.Итак, пакет находился в папке node_modules потребляющего пакета, но я получал сообщение «не могу найти модуль».Мне понадобилось несколько минут, чтобы понять мою ошибку.: - (

1 голос
/ 18 октября 2017

В моем случае UNMET PEER DEPENDENCY redux@^3.0.0 вызвало это сообщение об ошибке, просмотрите все из них и снова установите отсутствующие модули, используя --save

npm install redux --save
0 голосов
/ 23 сентября 2016

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

(Psst! Я не уверен, что я успешно помог в решении вышеуказанной ошибки, или я нарушил какое-то правило или формат ответа, но я столкнулся с вышеуказанной ошибкой и некоторыми другими и мне потребовалось много времени, чтобы найти правильные решения для этих ошибок. Я пишу полное решение, потому что в случае, если кто-то еще столкнется с этими ошибками, то он, надеюсь, найдет решение здесь.)

Итак, добавляя и развивая ответ, предоставленный PrashanthiDevi , а также добавляя мой личный опыт, вот оно:

Я новичок во всей части e2e и модульных тестов. Я начал изучать эту часть с Транспортир . Теперь у меня уже были файлы, в которые были записаны тесты, но мне пришлось запускать тесты.

Я уже установил все необходимые программы и инструменты, но когда я изначально запустил код для запуска тестов, gulp itest, я получил Ошибка «Не могу найти модуль» . Пройдя много разных вопросов по SO, я нашел один ответ, который, как мне казалось, мог бы помочь найти решение.

Человек предложил запустить команду npm install в папке моего проекта.

Причиной для этого было обновление папки node-modules внутри папки нашего проекта, со всеми необходимыми и необходимыми файлами и зависимостями.

(приведенная ниже часть, возможно, не имеет отношения к этому вопросу, но может быть полезна, если кто-то сталкивался с той же ситуацией, с которой я столкнулся.)

Вышеуказанный шаг наверняка решил мою предыдущую ошибку, но выкинул новую! На этот раз ошибка составляет Could not find chromedriver at '..\node_modules\protractor\selenium\chromedriver'.

Однако решение этой ошибки было довольно глупым (и забавным) для меня. У меня уже был файл chromedriver в моей папке selenium . Но оказалось, что вышеприведенная ошибка возникла из-за того, что мои хроматические драйверы файлы были в папке селен и не внутри chromedriver папка. Итак, создание папки chromedriver и копирование файлов тамошних драйверов решило мою проблему!

Также, для ошибки : Превышено время ожидания сервера WebDriver , вы можете добавить эту строку кода в conf.js файл внутри exports.config{}:

seleniumAddress: 'http://localhost:8080/'

Надеюсь, это поможет!

0 голосов
/ 18 мая 2017

Только что нашел необычный сценарий, который может быть кому-то полезен и похож на красную сельдь.

Я также получал ошибку Cannot Find Module, но, как ни странно, все отлично работало в моей локальной (размещенной на Mac) среде Node.js. Эта проблема появилась только тогда, когда код был развернут на нашем сервере Linux.

Ну ... оказалось, что это была опечатка, которую (по-видимому) установка Node.js на базе Mac с радостью проигнорировала.

Включение выглядело так:

var S3Uploader = require('./S3Uploader.class');

Но сам файл назывался "s3Uploader.class.js"

Обратите внимание на различие в регистре символов 's' и 'S' между кодом и именем файла.

Так что - если есть вероятность, что ни одно из других решений здесь не решит вашу проблему, трижды проверьте, что вы не ошиблись в введенных символах! :)

и Дух!

0 голосов
/ 12 июня 2015

Измените каталог и укажите папку вашего текущего проекта, а затем «npm install»..

Это установит все зависимости и модули в папку вашего проекта.

0 голосов
/ 12 апреля 2019

Удаление узла / npm и повторная установка стабильной (не самой последней) версии работали для меня.

sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*}

https://nodejs.org/en/download/
0 голосов
/ 06 апреля 2016

Я пытался опубликовать свой собственный пакет и затем включить его в другой проект.У меня была эта проблема из-за того, как я построил первый модуль.Я использую экспорт ES2015 для создания модуля, например, скажем, модуль выглядит следующим образом:

export default function(who = 'world'){
    return `Hello ${who}`;
}

После компиляции с Babel и до публикации:

'use strict';

Object.defineProperty(exports, "__esModule", {
    value: true
});

exports.default = function () {
    var who = arguments.length <= 0 || arguments[0] === undefined ? 'world' : arguments[0];


    return 'Hello ' + who;
};

Итак, после npm install module-nameв другом проекте (нет ES2015) я должен был сделать

var hello = require('module-name').default;

Чтобы фактически импортировать пакет.

Надеюсь, это поможет!

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