如何导入“;旧的“;ES6中的ES5代码

How to import "old" ES5 code in ES6

本文关键字:ES6 中的 ES5 代码 旧的 何导入 导入      更新时间:2023-09-26

我有一个ES6应用程序(带有Babel 6.5Webpack),它成功地导入了我的模块,如下所示:

import $ from 'jquery';

我想安装https://github.com/robflaherty/riveted/blob/master/riveted.js(Google Analytics的插件),但正如您所看到的,该代码没有类似module.exports = ...的东西,它只定义了一个全局变量riveted,但它有一个指向riveted.js的明显有效的package.json

所以做一些类似的事情

import riveted from 'riveted'
riveted.init();

抛出错误:

_riveted2.default.init不是函数

import riveted from 'riveted'
riveted.init();
import 'riveted'
riveted.init();

抛出错误:

铆接未定义

import * as riveted from 'riveted'
riveted.init();

抛出错误:

riveted.init不是一个函数

如何访问铆接的init()函数?

您可以使用webpack导出加载程序:

var riveted = require("exports?riveted!riveted")

有关的详细信息,请参阅shiming模块概述

步骤1。修改riveted.js

在第18行之后添加一些代码。

    // Browser global
    root = !root && typeof self == 'object' ? self : root; // add this line
    root.riveted = factory();

因为当es6导入文件时,this是未定义的,所以我们使用self

selfwindow好,它在主线程和工作线程中都能工作。

步骤2。修改导入路径

像这样:

    import './riveted.js';
    riveted.init();

直接导入js文件需要./../

示例:

import `./file.js`
import `../file.js`
import `./a/b/file.js`
import `../a/b/file.js`
import `../../a/b/file.js`

铬测试。