首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ES2015模块导入和导出语法错误

ES2015模块导入和导出语法错误
EN

Stack Overflow用户
提问于 2016-02-11 10:17:28
回答 1查看 20.9K关注 0票数 15

在ES6中使用导入导出时,我得到的错误如下:

SyntaxError:导出声明只能出现在顶层

我想找办法解决这个问题,但我做不到。有人能解释这件事吗。我对ES6很陌生,尤其是进出口业务。(我把StealJS完全用于这类东西了)谢谢!

js文件是:

app.js

代码语言:javascript
复制
import { cube, cubeRoot } from 'functions';

console.log(cube(4));
console.log(cubeRoot(125));

functions.js

代码语言:javascript
复制
// functions.js

function cube(a) {
    return a * a * a;
}

function cubeRoot(a) {
    return Math.cbrt(a);
}

export { cube, cubeRoot}
EN

回答 1

Stack Overflow用户

发布于 2016-04-05 16:39:54

2017年夏季最新情况:

参见http://caniuse.com/#search=modules,新的支持,可能需要更改设置。

现在事情不那么模糊了。要使模块正常工作,您必须使用,告诉浏览器它是一个模块(另一个是脚本)。第一种方法是隐式的,导入的模块总是模块。第二种方法是使用类型模块<script src="anymodule.js" type="module"></script>

确保导入和导出仅在顶级中,不在块内,不在if语句中,不在循环内部,等等。

还要确保提供完整的路径(包括.js),它应该从./../开始。将文件求和在同一个文件夹中,它将是import { cube, cubeRoot } from './functions.js';

模块字符串上的eval将无法工作。

过时的答案如下:

在我编写这个答案(04/2016)时,任何浏览器都不支持ES2015模块导入和导出语法。错误消息会导致错误,因为它意味着支持语法,但根本不支持它。参见这里的第一个注意事项,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

之所以如此,是因为模块加载器的规范仍在进行中。请参阅https://whatwg.github.io/loader/#status

然而,它们是用于填充或转换这种语法的工具,就像babel一样。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35336457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档