我正在构建一个包含多个子应用的应用。文件结构如下:
├── 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
以允许此行为?
答案 0 :(得分:0)
我最终使用了this Gist找到的方法:
在foo.js
中,我将require()
次来电更改为:
var bodyParser = require(__base + 'body-parser');
在app.js
(加载foo.js
)中,我将其添加到顶部:
global.__base = __dirname + '/node_modules/';
它不漂亮,但它有效。