0

假设我有我的 nodejs 应用程序foobar-base,并且我创建了另一个应用程序 ( foobar-baz),它旨在成为一个“模块” foobar-base

$ cd foobar-base
$ npm install foobar-baz

foobar-baz如果一个方法依赖于我定义的类,这是不好的做法foobar-base吗?

那是:

foob​​ar-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

foob​​ar-base/node_modules/foobar-baz/index.js

myClass.myMethod();    // already available, see below

foob​​ar-base/index.js

myClass = require('./src/myClass');

var foobar-baz = require('foobar-baz');    // myClass.myMethod() is called

...但话又说回来,“全局变量很糟糕”...那我该怎么办?

4

0 回答 0