如何添加节点需要库到路径?

时间:2016-06-25 19:40:09

标签: node.js macos unix

安装bitcoinjs并启动节点并运行后:

var bitcoin = require('bitcoinjs-lib');

我收到错误:

Error: Cannot find module 'bitcoinjs-lib'
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at repl:1:15
    at REPLServer.defaultEval (repl.js:262:27)
    at bound (domain.js:287:14)
    at REPLServer.runBound [as eval] (domain.js:300:12)
    at REPLServer.<anonymous> (repl.js:431:12)
    at emitOne (events.js:82:20)

当我运行这些命令时,它似乎找到了库:

$ pwd
/usr/local/lib/node_modules
$ ls
bitcoinjs-lib   browserify  npm     uglify-js
$ node
> var bitcoin = require('bitcoinjs-lib');
undefined

我认为它适用于这种情况,因为我正在从库/usr/local/lib/node_modules

运行节点

如何将模块库添加到节点,以便从任何位置找到所需的库,而不必将目录更改为/ usr / local / lib / node_modules?

我尝试将bash_profile中的路径修改为:

PATH=$PATH:/usr/local/lib/node_modules

但这并不能解决问题。

2 个答案:

答案 0 :(得分:2)

要快速完成此操作,您需要设置$NODE_PATH

NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules

但是,一般情况下,不应全局安装节点模块(这意味着在/usr/local/lib/node_modules之类的“系统目录”中。

而是创建项目目录,并在那里安装模块:

$ mkdir my-project
$ cd my-project
$ npm install bitcoinjs-lib

如果在该项目目录中运行Node,require('bitcoinjs-lib')将起作用。

答案 1 :(得分:2)

一种骇人听闻的方式:

module.paths.unshift(<path>);
process.env.NODE_PATH = <path>
module.constructor._initPaths();

我写了一个Cocos Creator(基于Electron)插件时发现了上述解决方案,该插件在IDE打开期间就被加载了。我需要从该插件中require来使用utils脚本,该脚本不在任何require路径中。我在Win10的CC和Node.js v10.16.0中测试了第一个代码段。