不在乎我为什么使用 .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';
预期行为
模块顺序
- ./lib/模块
- ./lib/npm
- '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
。
关于javascript - plugin-transform-es2015-modules-commonjs 未遵循代码顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41657012/