Skip to content

Instantly share code, notes, and snippets.

@tkawachi
Last active February 19, 2016 01:23
Show Gist options
  • Save tkawachi/edfb7a5e17308357af01 to your computer and use it in GitHub Desktop.
Save tkawachi/edfb7a5e17308357af01 to your computer and use it in GitHub Desktop.

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')()

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();

import foo from 'foo'

baz.js

import foo from 'foo';

foo();

これは babel5, babel6 の両方で動作する。

方針

require() を使わず import を使う。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment