私は大量のチェックを行いました。これは間違いなく異常です。私は@type
の定義(typescript 2)をロードするAngular 2サービスを持っています。これはcommmon.jsモジュール(visionmedia/debug)をロードします。 common.jsモジュールの中には、条件がfalseでコードが実行されていなくても、エラーを引き起こす単純なif文があります。 Angularアプリはsystem.js
を使用してモジュールを読み込みます。角2 + Zone.js +共通jsモジュール:IF文の異常です。偽の場合でもコードが実行されます
通常のコードif (false) { console.log('This code is not executed') }
通常の動作では、何も
異常コードを起こりません:自体が有効であるzone.js:101 GET http://localhost:8002/ms.js 404 (Not Found)
エラー:if (false) { exports.humanize = require('ms'); }
それは エラーをトリガします。実際、スクリプトは見つからない。深く間違っているのは、それが最初に現れてはならないということです。偽のif条件でブロックする必要があります。 zone.js
は、大文字小文字が偽であっても何らかの形で命令を解析するようです。これを避けるために私は何ができますか?私は、同じスクリプトがサーバ上またはフロントエンド上で呼び出されているかどうかに応じて、1つのパスまたは別のパスが必要かどうかを確認する必要があります。 CJSモジュール内
大きな画像:
// Trying to detect if environment is node.js
// In backend (no zones) everything works as expected
// In frontend, the require('ms') statement is executed event if condition is false.
// I checked manually if process is defined, it's not.
// Event the basic `false` condition also fails to block code.
if (typeof process === 'undefined') {
exports.humanize = require('node_modules/ms/index.js');
console.log('Browser');
} else {
exports.humanize = require('ms'); // If I comment this code works as intended
console.log('Node');
}
はい、私はsystem.jsを使用してください。私は角度2のヒーローのチュートリアルに従いました。それはよい考えでした。この場合は何もする必要がありますか? –
私は答えに何かを追加しました –
素敵に行われました!それは私には起こりませんでした。私はそれを試して答えに戻る。 –