我开始从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/)
答案 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。最后,它将所有内容包含在一些需要在浏览器中工作的代码中。