从ES6移植到ES5的文件使用哪种类型的import语句?

问题描述

我有一个index.js文件,可以使用E2015成功导入基于类的文件,如下所示:

import { Handler } from './Library/Transform/Handler.js';

但是由于兼容性问题,我现在必须将该文件转换为ES5,但是随后我开始在浏览器中收到此错误

Uncaught SyntaxError: The requested module './Library/Transform/Handler.js' does not provide an export named 'Handler'.

可以,但是我不确定如何导入它,我只是尝试了一个破损的AMD,像这样:require('./Library/Transform/Handler.js');,但是我得到了完全相同的错误

在这里发现了类似的问题,但没有一个专门解决此问题。

然后,我查看实际的转译文件,并在文件末尾看到:

exports.Handler = Handler;

return exports;

}({}));

因此它正在导出Handler,我也尝试过:

var Handler = require('./Library/Transform/Handler.js');

我继续遇到相同的错误

下面是rollup.config.js文件

import commonjs from "@rollup/plugin-commonjs";
import resolve from "@rollup/plugin-node-resolve";
import babel from "rollup-plugin-babel";
import { uglify } from "rollup-plugin-uglify";
import banner from "rollup-plugin-banner";

var git = require("git-rev-sync");
var buildVer = process.env.BUILD || 0;
var currRevision = git.long();

export default {
  input: ["./src/Handler.js"],output: [
    {
      file: "./dist/Handler.js",format: "iife",name: "version",},{
      file: "./dist/Handler.min.js",plugins: [uglify()],],plugins: [
    banner(
      "\t<%= pkg.name %>\n\t<%= pkg.version %>-" +
      buildVer +
      "\n\t" +
      currRevision +
      "\n\t" +
      new Date().toString() + 
      "\n\t<%= pkg.description%>"
    ),resolve(),commonjs(),babel({
     extensions: [".js"],exclude: ["node_modules"],presets: [
       [
         "@babel/preset-env",{
           targets: "ie 11",modules: false,useBuiltIns: "usage",corejs: { version: 3,proposals: true },}
       ]
     ]
    })
  ]
};

未转译的Handler.js文件导入语句具有一些部分,我们可以使用这些部分来简化开发这些表单时的工作流程,如下所示:

import { XHandler } from './xy/js-es6/x-es6.js';
import 'promise-polyfill/src/polyfill';
import getHelp from './_Partials/getHelp.11ty.js';
import pwd from './_Partials/pwd.11ty.';
import challengeMe from './_Partials/challengeMe.11ty';
import lockedOut from './_Partials/lockedOut.11ty';
import infoSec from './_Partials/infoSec.11ty';
import lockedOutAgain from './_Partials/lockedOutAgain.11ty';

const debug = false;

export class Handler extends XHandler {
  constructor() {
    super();
    console.log('Handler:Constructor');
  }

  createFormSession(formId,payload) {
    console.log('Handler:createFormSession');

    return new FormSession(formId,payload);
  }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)