2011-12-18 1 views
2

Если установить Benchmark.js локально с npm install benchmark, чем все работает хорошо:Benchmark.js модуль не может найти во всем мире в Nodejs

require("benchmark") > Object 

Но когда я пытаюсь установить Benchmark глобально с -g флагом npm install benchmark -g, Nodejs не может найти модуль (сначала удалите локально установленный тест):

require("benchmark") > Error: Cannot find module 'benchmark' 

Я пробовал под Windows и Linux оба. Те же результаты. Локально работайте, глобально нет. Может ли кто-нибудь помочь мне ПОЧЕМУ?

Модуль mongodb работает по всему миру.

+0

Это глобальная проблема? Случается для всех модулей? Кроме того, у вас есть что-то вроде NVM или N? (администраторы версий узлов) – alessioalex

+0

это происходит только с эталоном. другие пакеты работают хорошо. У меня нет nvm. Вы пробовали это? происходит ли ошибка для вас? –

ответ

7

Вы можете сделать это, используя npm link. Например - экспресс - npm link express

npm install -g express 
cd <your-application-development-path> 
npm link express 

будет создана символическая связь экспресс

[email protected]:~/Programming/web/foo$ ls -lrt node_modules 
total 12 
drwxr-xr-x 2 xxxx xxxx 4096 2011-12-21 17:07 .bin/ 
lrwxrwxrwx 1 xxxx xxxx 38 2011-12-21 17:07 express -> ../../../node/lib/node_modules/express/ 
+0

+1 - Я не знал о 'npm link'! Ницца! – swatkins

+0

Первый нуль! Спасибо за ваш ответ, но сначала: npm link dosen't работает над окнами, во-вторых, это не ответ, почему benchmarkjs dosen't работают глобально, howheer других модулей. Вы пытались использовать бенчмарк глобально не локально, и это сработало? Еще раз спасибо! –

+0

Привет, Omnosis, протестирован «тест производительности npm» и сделал «benchmark = require (« benchmark »)», и скрипт начал нормально. Хотя это было сделано на Ubuntu Linux. Не окна. A 'ls -lrt' из node_modules показывает ' benchmark -> ../../../ node/lib/node_modules/benchmark/' У вас есть сценарий, который можно запустить и протестировать на Linux? Не удивлен 'npm link' не работает в Windows, поскольку NTFS/FAT не поддерживает символические ссылки. –

0

Я думаю, что есть еще один способ заставить его работать при установке модулей в глобальном масштабе. Попробуйте установить переменную env export NODE_PATH=/usr/local/lib/node_modules

Тогда ваше «требование» должно работать нормально.