plugin-transform-es2015-modules-commonjs没有遵循代码顺序

时间:2017-01-15 01:49:39

标签: javascript node.js babeljs

不在乎我为什么使用.es6> .js,这只是为了显示错误

完整问题请参阅babel/babel/issues/5125

index.js

{
    let k = Object.keys(require.extensions)[0];
    let c = !!(k == '.js');

    console.log('index 1', require.extensions, k, c, 'k should = ', '.js')
}

import { require } from './lib/module.es6';

{
    let k = Object.keys(require.extensions)[0];
    let c = !!(k == '.es6');

    console.log('index 2', require.extensions, k, c, 'k should = ', '.es6')
}

import './lib/npm';

预期行为

模块订单

  1. ./ lib / module
  2. ./ lib / npm
  3. ' FS'
  4. 运行时

    index 1  .js true k should =  .js
    ( module 'lib/module.es6' should load on here )
    ./lib/module
    index 2  .es6 true k should =  .es6
    ( module 'lib/npm' should load on here, and ext should is '.es6' )
    lib/npm npm.es6
    index 3
    ( module 'fs' should load on here )
    index 4
    

1 个答案:

答案 0 :(得分:2)

这不是巴贝尔的问题。

import语句全部先执行,无论它们出现在代码中的哪个位置。 Babel保留了这种行为,将其转换为CommonJS。

如果您需要按特定顺序导入内容或与其他代码交错,请不要使用import