Ответ 1
Это происходит потому, что вы устанавливаете async глобально.
npm install async
поставит создать каталог с именем node_modules
, а поисковый алгоритм require
найдет его там.
Сегодня мне становится странно, что после установки async в глобальных отчетах nodejs он не может найти модуль. Следующим является рабочий процесс
установить async
npm install -g async
убедитесь, что существует async
npm list -g async
получить этот вывод:
/usr/local/lib ├── [email protected] └─┬ [email protected] └─┬ [email protected] └─┬ [email protected] └── [email protected]
3.Попробуйте его использовать.
I create a simple js file which only contains one statement: var async=require('async'); then execute the file via node, I get exception:
Error: Cannot find module 'async' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:364:17) at require (module.js:380:17) at Object. (/lxzhu/nodejs/asynctest/test.js:1:73) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10)
Это происходит потому, что вы устанавливаете async глобально.
npm install async
поставит создать каталог с именем node_modules
, а поисковый алгоритм require
найдет его там.
Глобальная установка NPM не всегда означает, что модуль может использоваться для нескольких проектов. Это довольно популярное заблуждение. Вы можете прочитать этот пост в блоге на nodejs.org для получения дополнительной информации, но, вообще говоря, глобальные модули используются для инструментов командной строки и других системных утилит, а не для модулей, которые будут использоваться в вашем коде.
Итак, в идеале вам понадобятся модули локально для каждого из ваших проектов.
async установлен глобально. Для этого мы должны создавать и устанавливать модули async.
npm установить async --save
эта командная строка добавляет файлы в папку node_modules.
Правильный способ использования глобально установленных модулей в нескольких проектах состоит в использовании команды npm link
npm link
создаст символическую ссылку на глобально установленный пакет в ваш каталог node_modules
Изменить: поскольку npm @5, выполняющая локальную установку npm install foo
, будет ссылаться из системного кеша, аналогичного стратегии пряжи. Поэтому используйте npm install
для локального, даже если у вас есть тот же самый модуль, установленный глобально
Наконец, я получаю ответ от http://nodejs.org/api/modules.html.
После установки в глобальном масштабе мне нужно поместить его подкаталог в NODE_PATH, чтобы он появился в пути поиска node.
Кроме того, как сказал документ, предлагается хранить модуль локально, а NODE_PATH - для совместимости версий, и мы больше не должны его использовать.