从当前目录上方加载node_module

时间:2016-08-09 13:21:36

标签: node.js node-modules

我正在构建一个包含多个子应用的应用。文件结构如下:

├── app1
│   ├── app.js
│   ├── node_modules
│   └── package.json
├── shared
│   └── foo.js

app.js中,我正在加载foo.js,如下所示:

require('../shared/foo');

foo.js我尝试使用npm模块,body-parser,如下所示:

var bodyParser = require('body-parser');

这是一个"找不到模块错误" - body-parser安装在app1/node_modules目录中,但foo.js显然在自己的目录中找不到它。

有没有办法告诉require()调用使用它调用的文件的工作目录而不是它自己的目录?或者我是否需要在package.json内设置第二个/shared以允许此行为?

1 个答案:

答案 0 :(得分:0)

我最终使用了this Gist找到的方法:

foo.js中,我将require()次来电更改为:

var bodyParser = require(__base + 'body-parser');

app.js(加载foo.js)中,我将其添加到顶部:

global.__base = __dirname + '/node_modules/';

它不漂亮,但它有效。