import - node.js の require npm install モジュールは何をしますか?
世界只因有你
世界只因有你 2017-06-29 10:09:33
0
1
1128

私は今、require モジュールが後続の require にも影響を与えることを発見しました。例として moment と moment-timezone を取り上げます。つまり、

/app.js

リーリー

しかし、最初に moment-timezone を要求し、次に npm install moment を要求した場合でも、引き続き require('moment') することができ、この moment は次のように moment-timezone の関数を使用できます。

/app.js

リーリー

私が理解できないのは、npm install moment がない場合でも、require('moment-timezone') の後、エラーを報告せずに require('moment'); できるのはなぜですか?

このようなノード モジュールの設計はどのようなものですか、またはそのような動作を引き起こす可能性のある特別な用語はありますか?

ところで、上記の moment-timezone がこのように設計できたとして、今日 npm で使用できるように noname というモジュールをリリースしたとします。プログラムが require('noname'); を実行する限り、まず、それは可能ですか? 次と同様の効果を達成するために、後続の require('express') モジュールの戻り内容を変更しました:

リーリー

世界只因有你
世界只因有你

全員に返信(1)
某草草

1. require('moment-timezone')之后,即使我没有npm install moment我还是可以require('moment') なのにエラーが報告されないのはなぜですか?

依存関係を表示moment-timezone リーリー

moment に依存していることがわかります。つまり、momentmoment-timezone是依赖了moment的,这表示在安装moment-timezone时会自动安装moment のインストール時に自動的にインストールされるため、別途インストールしなくても使用できます。

2. require('moment-timezone')会影响后续var moment = require('moment')

に `moment` が割り当てられているのはなぜですか

ソースコードを見るmoment-timezone リーリー 14 行目で、require('moment') が変更されていることがわかります。ご存知のとおり、npm モジュールはキャッシュされるため、後続の var moment = require(' moment') が影響を受けます

ちなみに、モジュールを直接変更することはグローバル変数を変更することと同じであり、良い習慣ではありません。ここの moment-timezone修改了require('moment'),众所周知npm模块是会缓存的,所以后续var moment = require('moment') モジュールは基本的に `moment` モジュールのパッチであり、特殊なケースです。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート