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



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

完整问题请参阅Babel/Babel/Issues/5125

索引.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"

运行

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

这不是 babel 的问题。

import语句都首先执行,无论它们出现在代码中的哪个位置。Babel 将这种行为保留为一个文件,它被转译为 CommonJS。

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

最新更新