foo.js をコンパイル
export default function () {
console.log('foo');
}
babel 5.8.29
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = function () {
console.log('foo');
};
module.exports = exports['default'];
babel-cli 6.5.1 + babel-preset-es2015 6.5.0
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function () {
console.log('foo');
};
babel5 では module.exports に関数が束縛されているが、 babel6 では exports.default に関数が束縛されている。
require('foo')();
babel5 NODE_PATH="." ./node_modules/.bin/babel-node bar.js
で実行できた。
babel6 では
babel6 $ NODE_PATH="." ./node_modules/.bin/babel-node bar.js
/Users/kawachi/tmp/babel56-exp/babel6/bar.js:3
require('foo')();
^
TypeError: require(...) is not a function
at Object.<anonymous> (bar.js:1:1)
at Module._compile (module.js:413:34)
at loader (/Users/kawachi/tmp/babel56-exp/babel6/node_modules/babel-register/lib/node.js:128:5)
at Object.require.extensions.(anonymous function) [as .js] (/Users/kawachi/tmp/babel56-exp/babel6/node_modules/babel-register/lib/node.js:138:7)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at /Users/kawachi/tmp/babel56-exp/babel6/node_modules/babel-cli/lib/_babel-node.js:161:27
at Object.<anonymous> (/Users/kawachi/tmp/babel56-exp/babel6/node_modules/babel-cli/lib/_babel-node.js:162:7)
at Module._compile (module.js:413:34)
bar.js を次のように変更すると babel5 と同じように動作する。
require('foo').default();
baz.js
import foo from 'foo';
foo();
これは babel5, babel6 の両方で動作する。
require() を使わず import を使う。