0

nodejs applicationfoobar-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呼び出しは失敗します。しかし、理論的には、npm に公開すると、require は機能します。../..//usr/lib/node_modules/

したがって、この種の予期しない (まだ理解可能な) 動作は、この一連の行動に従うことを検討しないように十分な危険信号を投げかけています。

代わりに、「グローバル化」しました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