将旧 JavaScript 代码转换为 ES6 模块
Convert old JavaScript code into ES6 module
我正在尝试将旧的 JavaScript 库转换为 ES6 兼容模块。
库是 tracking.js (https://github.com/eduardolundgren/tracking.js/blob/master/build/tracking.js) 但我所有的结果都以:Cannot read property 'xxx' of undefined
结尾
有什么简单的方法可以使用这样的模块吗?我正在尝试创建像 https://trackingjs.com/docs.html#step-2
这样的基本示例
更新
因为有更多代码的请求。让我展示一个非工作示例(Vue.js 组件的一部分):
import tracking from 'tracking';
export default {
created() {
const colors = new tracking.ColorTracker(['magenta', 'cyan', 'yellow']);
}
};
错误是TypeError: _tracking2.default.ColorTracker is not a constructor
您应该使用 exports-loader,无需修改库,加载程序将在全局范围内查找变量,例如:
import * as tracking from 'exports-loader?tracking!tracking';
exports-loader 需要知道如何在全局范围内访问模块(tracking.js 将其自身分配给 window.tracking
)。在这里,您告诉它使用带有参数 tracking
(在查询问号之后)的 exports-loader 来加载模块 tracking
(在解释标记之后)。
我正在尝试将旧的 JavaScript 库转换为 ES6 兼容模块。
库是 tracking.js (https://github.com/eduardolundgren/tracking.js/blob/master/build/tracking.js) 但我所有的结果都以:Cannot read property 'xxx' of undefined
有什么简单的方法可以使用这样的模块吗?我正在尝试创建像 https://trackingjs.com/docs.html#step-2
这样的基本示例更新
因为有更多代码的请求。让我展示一个非工作示例(Vue.js 组件的一部分):
import tracking from 'tracking';
export default {
created() {
const colors = new tracking.ColorTracker(['magenta', 'cyan', 'yellow']);
}
};
错误是TypeError: _tracking2.default.ColorTracker is not a constructor
您应该使用 exports-loader,无需修改库,加载程序将在全局范围内查找变量,例如:
import * as tracking from 'exports-loader?tracking!tracking';
exports-loader 需要知道如何在全局范围内访问模块(tracking.js 将其自身分配给 window.tracking
)。在这里,您告诉它使用带有参数 tracking
(在查询问号之后)的 exports-loader 来加载模块 tracking
(在解释标记之后)。