Не удается найти async после установки

Сегодня мне становится странно, что после установки 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)

Ответы

Ответ 1

Это происходит потому, что вы устанавливаете async глобально.

npm install async поставит создать каталог с именем node_modules, а поисковый алгоритм require найдет его там.

Ответ 2

Глобальная установка NPM не всегда означает, что модуль может использоваться для нескольких проектов. Это довольно популярное заблуждение. Вы можете прочитать этот пост в блоге на nodejs.org для получения дополнительной информации, но, вообще говоря, глобальные модули используются для инструментов командной строки и других системных утилит, а не для модулей, которые будут использоваться в вашем коде.

Итак, в идеале вам понадобятся модули локально для каждого из ваших проектов.

Ответ 3

async установлен глобально. Для этого мы должны создавать и устанавливать модули async.

npm установить async --save

эта командная строка добавляет файлы в папку node_modules.

Ответ 4

Правильный способ использования глобально установленных модулей в нескольких проектах состоит в использовании команды npm link

npm link создаст символическую ссылку на глобально установленный пакет в ваш каталог node_modules

Изменить: поскольку npm @5, выполняющая локальную установку npm install foo, будет ссылаться из системного кеша, аналогичного стратегии пряжи. Поэтому используйте npm install для локального, даже если у вас есть тот же самый модуль, установленный глобально

Ответ 5

Наконец, я получаю ответ от http://nodejs.org/api/modules.html.

После установки в глобальном масштабе мне нужно поместить его подкаталог в NODE_PATH, чтобы он появился в пути поиска node.

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