我正在尝试在Mac OSX Lion上设置Node.这一切似乎都运行正常,但我似乎无法从我的全局模块文件夹导入任何模块.我收到错误,
Error: Cannot find module <module>
Run Code Online (Sandbox Code Playgroud)
如果我运行这个:node -e require.paths,我得到的回应是:
[ '/usr/local/lib/node_modules',
'/Users/Me/.node_modules',
'/Users/Me/.node_libraries',
'/usr/local/Cellar/node/0.4.12/lib/node' ]
Run Code Online (Sandbox Code Playgroud)
哪个是正确的,我的模块确实安装在/ usr/local/lib/node_modules中.但是,当我尝试运行脚本时,我得到了这个:
Error: Cannot find module 'socket.io'
at Function._resolveFilename (module.js:326:11)
at Function._load (module.js:271:25)
at require (module.js:355:19)
at Object.<anonymous> (/Users/Me/node/server.js:2:10)
at Module._compile (module.js:411:26)
at Object..js (module.js:417:10)
at Module.load (module.js:343:31)
at Function._load (module.js:302:12)
at Array.<anonymous> (module.js:430:10)
at EventEmitter._tickCallback (node.js:126:26)
Run Code Online (Sandbox Code Playgroud)
我的.bash_profile看起来像这样:
export PATH=/usr/local/mysql/bin:$PATH
export NODE_PATH=/usr/local/lib/node_modules
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/"
Run Code Online (Sandbox Code Playgroud)
真的很感激一些帮助,我不知道为什么我不能导入任何库.
Tad*_*cik 105
如果您使用的是npm> = 1.0,则可以使用npm link <global-package>创建已全局安装的软件包的本地链接.(警告:操作系统必须支持符号链接.)
然而,这并非没有问题.
npm link是一个开发工具.这是真棒对当地的发展框管理包.但是使用npm链接部署基本上是在寻找问题,因为它使得在没有意识到的情况下更新事物非常容易.
作为替代方案,您可以在本地以及全局安装软件包.
有关其他信息,请参阅
Joe*_*l B 67
Node.js使用环境变量NODE_PATH来指定要包含在模块搜索路径中的其他目录.您可以使用npm它自己告诉您使用该npm root -g命令存储全局模块的位置.将这两者组合在一起,您可以使用以下命令确保全局模块包含在搜索路径中(在Linux-ish上)
export NODE_PATH=$(npm root --quiet -g)
Nic*_*ros 61
您可以使用npm链接在项目文件夹中创建指向全局包的符号链接.
例:
$ npm install -g express
$ cd [local path]/project
$ npm link express
Run Code Online (Sandbox Code Playgroud)
它所做的就是创建一个本地node_modules文件夹,然后创建一个符号链接express - > [global directory] / node_modules/express,然后可以通过 require('express')
小智 21
全局安装任何包,如下所示:
$ npm install -g replace // replace is one of the node module.
Run Code Online (Sandbox Code Playgroud)
由于此替换模块是全局安装的,因此如果您看到节点模块文件夹,则不会在那里看到替换模块,因此您无法使用require('replace')来使用此软件包.
因为使用require,您只能使用节点模块文件夹中存在的本地模块.
现在要使用全局模块,您应该使用以下命令将其与节点模块路径链接.
$ npm link replace
Run Code Online (Sandbox Code Playgroud)
现在返回并查看您的节点模块文件夹,您现在可以在那里看到替换模块,并且可以在应用程序中使用require('replace'),因为它与本地节点模块链接.
如果需要进一步澄清,请告诉我.
lin*_*ing 13
您可以将require与全局模块目录的路径一起用作参数.
require('/path/to/global/node_modules/the_module');
Run Code Online (Sandbox Code Playgroud)
在我的Mac上,我用这个:
require('/usr/local/lib/node_modules/the_module');
Run Code Online (Sandbox Code Playgroud)
如何找到全局模块的位置?- > npm安装包在哪里?
将环境变量 NODE_PATH 设置为指向您的全局node_modules文件夹。
在 Windows 7 或更高版本中,路径类似于%AppData%\npm\node_modulesUNIX 中的路径,/home/sg/.npm_global/lib/node_modules/但它取决于用户配置。
该命令npm config get prefix可以帮助找出哪个是正确的路径。
在 UNIX 系统中,您可以使用以下命令完成它:
export NODE_PATH=`npm config get prefix`/lib/node_modules/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
92335 次 |
| 最近记录: |