bluelovers
bluelovers

Reputation: 1255

plugin-transform-es2015-modules-commonjs didn't follow code order

don't care why i use .es6 > .js, this just for show error

full issues pls see 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';

Expected Behavior

modules order

  1. ./lib/module
  2. ./lib/npm
  3. 'fs'

runtime

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

Upvotes: 0

Views: 93

Answers (1)

Felix Kling
Felix Kling

Reputation: 816334

This is not an issue with babel.

import statements are all executed first, no matter where they appear in the code. Babel is preserving this behavior a file it is transpiled to CommonJS.

If you need the import something in a specific order or interleaved with other code, don't use import.

Upvotes: 2

Related Questions