假设我有我的nodejs应用程序foobar-base
,并且我创建了另一个应用程序(foobar-baz
),该应用程序旨在成为foobar-base
的“模块”:
$ cd foobar-base
$ npm install foobar-baz
如果foobar-baz
中的方法依赖于我在foobar-base
中定义的类,这是不好的做法吗?
那是:
var myClass = require('../../src/myClass.js');
myClass.myMethod();
可能这样做,但如果我通过npm link
测试模块:
$ cd foobar-baz
$ npm link
$ cd ../foobar-base
$ npm link foobar-baz
然后require
调用失败,因为../../
现在指向/usr/lib/node_modules/
,至少在我的机器上。但理论上,当发布到npm时,需求会起作用。
所以这种意外(但可以理解)的行为给我留下了足够的危险信号,不考虑采取这种行动。
相反,我只是“全球化”myClass
:
myClass.myMethod(); // already available, see below
myClass = require('./src/myClass');
var foobar-baz = require('foobar-baz'); // myClass.myMethod() is called
......但话说回来,“全局性很糟糕”......所以我该怎么办?