假设我有我的 nodejs 应用程序foobar-base
,并且我创建了另一个应用程序 ( foobar-baz
),它旨在成为一个“模块” foobar-base
:
$ cd foobar-base
$ npm install foobar-baz
foobar-baz
如果一个方法依赖于我定义的类,这是不好的做法foobar-base
吗?
那是:
foobar-base/node_modules/foobar-baz/index.js
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 中时,require 会起作用。
因此,这种意想不到的(但可以理解的)行为引发了足够多的危险信号,让我不考虑采取这种行动。
相反,我只是“全球化”了myClass
:
foobar-base/node_modules/foobar-baz/index.js
myClass.myMethod(); // already available, see below
foobar-base/index.js
myClass = require('./src/myClass');
var foobar-baz = require('foobar-baz'); // myClass.myMethod() is called
...但话又说回来,“全局变量很糟糕”...那我该怎么办?