2

私は2つのファイルを持っていますtest.js:

var Buffer = require('./Buffer');

そしてBuffer.js_

this.foo

で実行するとmocha test.js、すべて正常に動作しますが、実行mocha --compilers js:babel/register test.jsすると次のエラーが発生します

TypeError: Cannot read property 'foo' of undefined
at Object.<anonymous> (/path/Buffer.js:1:1)
at Module._compile (module.js:460:26)
at normalLoader (/path/node_modules/babel/node_modules/babel-core/lib/babel/api/register/node.js:150:5)
at Object.require.extensions.(anonymous function) [as .js] (/path/node_modules/babel/node_modules/babel-core/lib/babel/api/register/node.js:163:7)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/path/parser_test.js:2:14)
at Module._compile (module.js:460:26)
at normalLoader (/path/node_modules/babel/node_modules/babel-core/lib/babel/api/register/node.js:150:5)
at Object.require.extensions.(anonymous function) [as .js] (/path/node_modules/babel/node_modules/babel-core/lib/babel/api/register/node.js:163:7)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at /path/node_modules/mocha/lib/mocha.js:192:27
at Array.forEach (native)
at Mocha.loadFiles (/path/node_modules/mocha/lib/mocha.js:189:14)
at Mocha.run (/path/node_modules/mocha/lib/mocha.js:422:31)
at Object.<anonymous> (/path/node_modules/mocha/bin/_mocha:398:16)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3

thisモジュールが必要なときに未定義になるのはなぜですか? エラーを再現するために追加情報が必要な場合はお知らせください。

私はbabel 5.5.0とmocha 2.2.5を使用しています。

4

1 に答える 1

1

Babel は、与えられた入力が ES6/ES2015 モジュールであることを期待しています。モジュールでは、最上位thisundefined仕様によるものです。

babel --blacklist strict script.jsこの動作を無効にできますが、これは仕様によるものではないため、これはおそらく最良のアイデアではありません。代わりに を使用globalして、グローバル オブジェクトにアクセスできますnode

詳細については、ドキュメントを参照してください。

于 2015-08-06T15:45:26.193 に答える