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

标签 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/模块
  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

关于javascript - plugin-transform-es2015-modules-commonjs 未遵循代码顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41657012/

相关文章:

ecmascript-6 - Array.prototype.includes - 未使用 babel 进行转换

javascript - MUI5 无法使用 jest - SyntaxError : Cannot use import statement outside a module

javascript - 如何仅在 Electron 应用程序中复制和粘贴突出显示的文本?

javascript - [papaparse]解析错误处理程序

mysql - 优化mysql更新百万行

mysql - AWS Lambda 不执行 node.js MySQL 查询

javascript - 设置所有属性后如何动态创建Polymer自定义元素?

javascript - 为什么我不能评估 .load 以在 node.js 中启动交互式脚本?

node.js - 从客户端获取值到服务器端(node.js + express.js)

javascript - vscode 中的未绑定(bind)断点,用于在 docker 容器中调试 nodejs 应用程序