2011-12-18 75 views
2

全球范围内寻找。如果我有npm install benchmark安装Benchmark.js本地比一切工作良好:Benchmark.js模块不能的NodeJS

require("benchmark") > Object 

但是,当我尝试使用-g标志npm install benchmark -g全球安装基准,的NodeJS找不到模块(先删除本地安装的基准测试):

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

我在Windows和Linux下都尝试过。结果相同。 本地工作,全球不。任何人都可以帮我为什么?

该mongodb模块全球工作。

+0

这是一个全球性问题?适用于所有模块?另外,你是否安装了类似NVM或N的东西? (节点版本管理器) – alessioalex 2011-12-18 14:11:36

+0

它只发生在基准测试中。其他软件包运行良好。我没有安装nvm。你试过这个吗?错误是否发生在你身上? – 2011-12-18 14:21:11

回答

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 2011-12-21 21:28:39

+0

第一个零!感谢你的回答,但首先:npm链接不能在windows上工作,其次,这不是为什么基准测试人员不能在全球范围内工作,其他模块如何工作。你是否试图在全球范围内使用基准测试而不是本地测试?再次感谢! – 2011-12-22 12:17:29

+0

嗨Omnosis,测试'npm link基准测试'并且做了benchmark = require('benchmark');'并且脚本开始正常。尽管这是在Ubuntu Linux上完成的。不是窗户。 node_modules的'ls -lrt'显示 'benchmark - > ../../../ node/lib/node_modules/benchmark /' 您有脚本,我可以在Linux上运行和测试吗? 因为NTFS/FAT不支持符号链接,所以并不意外'npm link'在Windows上不起作用。 – 2011-12-22 13:17:31

0

我认为还有另一种方式使您安装全局模块它的工作。 尝试设置env变量export NODE_PATH=/usr/local/lib/node_modules

然后您的“要求”应该正常工作。