Ошибка: не удается найти модуль «нан»

Я работаю над собственным дополнением Node.js и следую документам nan.

Я включил nan в binding.gyp, например: "include_dirs" : [ "<!(node -e \"require('nan')\")" ]

Также nan находится в зависимостях npm.

Но когда я устанавливаю пакет внутри другого модуля node, node-gyp завершается с ошибкой.

> [email protected] install /Users/Shopgate/sandbox/stress/node_modules/nnb
> node-gyp rebuild

module.js:338
    throw err;
          ^
Error: Cannot find module 'nan'
    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 [eval]:1:1
    at Object.exports.runInThisContext (vm.js:74:17)
    at Object.<anonymous> ([eval]-wrapper:6:22)
    at Module._compile (module.js:460:26)
    at evalScript (node.js:431:25)
    at startup (node.js:90:7)
gyp: Call to 'node -e "require('nan')"' returned exit status 1. while trying to load binding.gyp

person Rax Wunter    schedule 25.12.2015    source источник
comment
У меня такая же ошибка. И npm install nan все не удалось с ошибкой: npm ERR! Cannot read property 'target' of null   -  person cuixiping    schedule 14.07.2016


Ответы (6)


В моем случае это произошло из-за отсутствия некоторых зависимостей в файле package-lock. Я решил это, удалив его и снова запустив $ npm install.

person Leonardo Emilio Dominguez    schedule 25.03.2020
comment
Это помогло и мне. Клонировал репозиторий из Gitlab на Mac, который был зафиксирован на компьютере с Windows. Не знаю, было ли это связано с этим. Изменить: опечатка - person Dewald Els; 21.12.2020
comment
Не работает для меня. - person certainlyakey; 02.02.2021
comment
работай на меня. спасибо. - person Le kawarien; 18.02.2021

Установите nan глобально:

npm i -g nan

А потом,

export NODE_PATH=$(npm root -g)

person Emre Tapcı    schedule 29.11.2018
comment
Было бы здорово, если бы вы могли добавить некоторые подробности, почему это решает проблему, например. в какой среде вы работаете, что вызывает проблему и т. д. Таким образом, мы все сможем лучше понять, почему возникает проблема и как ваш ответ помогает ее решить. - person Manfred; 21.01.2019
comment
Ваш ответ фактически решил проблему в нашем случае. Но было бы здорово понять, почему... - person Manfred; 21.01.2019
comment
я должен добавить что-то, что всегда экспортирует этот node_path? - person tofutim; 08.05.2020

Не идеально, но работает, если сначала установить nan.

$ npm install nan
person David Momenso    schedule 06.02.2016
comment
nan может быть косвенной зависимостью. Выполнение npm install nan затем изменит package.json. Это может быть или не быть желательным. Однако добавление nan в качестве прямой зависимости кажется рабочим обходным путем. - person Manfred; 13.11.2018

У меня была именно эта ошибка с версией node.js v12.18.3 и npm 6.14.6.

Обновление до версии node.js v14.15.4 (включая npm 6.14.10) решило проблему. npm install успешно запустился после обновления.

Никакой необходимости в установке nan не было.

person Risadinha    schedule 11.01.2021
comment
это сработало для меня. - person Tamas Kalman; 25.01.2021

К сожалению, у меня была эта проблема: все, что содержало «npm», немедленно возвращалось с выброшенной ошибкой.

module.js:471
    throw err;
    ^

Error: Cannot find module 'number-is-nan'
    at Function.Module._resolveFilename (module.js:469:15)
    at Function.Module._load (module.js:417:25)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/code-point-at/index.js:2:19)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
cd: no such file or directory: /npm

Мне пришлось удалить мои файлы node и npm

инструкции по удалению и переустановке, которым я следовал, были здесь (stackoverflow):

Как полностью удалить Node.js и переустановить с самого начала (Mac OS X)

Затем я шел по кроличьей тропе в каждом выпуске!

Не переходите сразу к SO (stackoverflow) при первых признаках трения, командное окно (cli) «как ни странно» даст вам правильные ответы на все (однако я столкнулся примерно с двумя препятствиями, о которых я упоминал SO, в основном чтобы быть в безопасности).

-- Я столкнулся с некоторыми трениями с файлом фреймворка python, находящимся в месте, которое заставило homebrew выдать предупреждение разрешить с помощью.

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

  • Затем, когда мне нужно было бежать: brew install node

-- У меня было еще одно brew link issue, достаточно простое, так как мою запись выше для предупреждения о ссылке на бочки нужно было просто пройти еще раз, так я подумал. Затем я получил сообщение об ошибке, говорящее, что я не могу brew link --overwrite node этот файл (привилегии или что-то еще, насколько я помню, тем не менее разрешено здесь).

Окончательно

  • Именно в этот момент все работало хорошо. -- Помните! между ними были простые шаги, которые я буквально просто подчинялся командным подсказкам в cli, например:

  • brew хочет, чтобы я удалял файлы по заданному пути:

-- открыть средство поиска> [в верхней части «панели инструментов монитора» MacBook] Перейти>перейти в папку...>скопировать и вставить путь, предоставленный brew, в окно cli>он найдет этот директор/файл, а затем удалит соответствующий каталог/ файл

-- продолжайте эти шаги, пока brew update не будет полностью удовлетворен.

  • Как я уже сказал, эта заключительная часть была просто прямым следованием указаниям из ответов на пиво.

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

  • не плачьте из-за разлитого кода, продолжайте поддерживать сообщество.

person Carl    schedule 12.11.2017

Я немного опаздываю на вечеринку. Но что сработало для меня, так это переустановить все node_modules с помощью rm -rf node_modules && npm install

person Maielo    schedule 28.08.2018