如何导出模块

问题描述 投票:1回答:1

我开始从https://egghead.io/technologies/es6学习ECMAScript 6方式,知道仍有很多可能会改变,但想早点开始。

但是,当我按照(https://egghead.io/lessons/ecmascript-6-es6-modules-es2015-import-and-export)上的教程说明完全相同时,我得到一个错误,我不知道我可能做错了什么。

未捕获的ReferenceError:未定义require

Babel转换为ES5后该行的代码

"use strict";

var _distExporter = require("dist/exporter");

console.log("2 + 3=", (0, _distExporter.sumTwo)(2, 3));
//# sourceMappingURL=importer.js.map

开发人员提到CommonJS和WebPack作为一种解决方案甚至提到了RequireJS,但在教程中没有说明我应该编写或使用替代库。

我的HTML就是这个

<html>
<head>
  <script src="dist/importer.js"></script>
</head>
<body>

</body>
</html>

我的importer.js是

import { sumTwo } from "dist/exporter";

console.log( "2 + 3=", sumTwo(2,3))

我的exporter.js是

function sumTwo(a, b){
  return a + b;
}

export { sumTwo };

我不知道我哪里出错了。我正在使用BabelJS(https://babeljs.io/

javascript ecmascript-6
1个回答
1
投票

如果您在Node下而不是在浏览器中运行此代码,您应该会看到您期望的结果。 Node了解CommonJS需要调用,并将离开并为您抓取其他文件。

浏览器不知道要求是什么特别的。但我们可以使用工具让浏览器了解。这是Browserify的一个例子,正如其他人提到的你也可以使用WebPack,但我认为WebPack的学习曲线要​​陡峭得多。

首先,你需要一些模块。

npm install -g browserify
npm install --save-dev babelify

然后我们可以像这样使用这些模块。

browserify main-file.js -o output-file.js -t babelify

这将导致您的源文件检查每个文件中的require调用,并将所需的其他文件添加到该bundle。然后它运行Babel变换,将ES6转换为ES5。最后,它将所有内容包含在一些需要在浏览器中工作的代码中。

© www.soinside.com 2019 - 2024. All rights reserved.