如何导出模块

时间:2015-09-01 08:37:52

标签: javascript ecmascript-6

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

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

未捕获的ReferenceError:未定义require

Babel转换为ES5后该行的代码

Chronology

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

我的HTML就是这个

"use strict";

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

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

我的importer.js

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

</body>
</html>

我的exporter.js

import { sumTwo } from "dist/exporter";

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

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

1 个答案:

答案 0 :(得分: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

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