【问题标题】:"Uncaught SyntaxError: Unexpected token {" while importing导入时出现“未捕获的语法错误:意外的令牌 {”
【发布时间】:2018-11-28 23:59:04
【问题描述】:

我正在尝试从另一个 javascript 文件中导入函数,但 main.js 中的导入语句出现错误。

main.js:

import {Event} from 'event.js';

let asdf = new Event("hi", "hi", "hi");
console.log(asdf.title);
console.log(asdf.mainText);
console.log(asdf.buttonSet);

event.js:

export function Event(title, mainText, buttonSet) {
    this.title = title;
    this.mainText = mainText;
    this.buttonSet = buttonSet;
}

我查了一下语法,没有发现任何错误:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

另外,我在这个链接中运行了代码 sn-p 并得到了同样的错误。 ES6 in the browser: Uncaught SyntaxError: Unexpected token import

编辑: 更正 index.html 文件:

<script src="scripts/main.js" type="module"></script>

【问题讨论】:

  • 您是否使用转译器来处理 es6 语法? (es6 语法表示 import 和 export 语句)
  • 对不起,我是 javascript 新手。什么是转译器?
  • 哦,所以你已经有了type="module" ...好吧,这很有趣。哪个浏览器和浏览器版本?

标签: javascript


【解决方案1】:

根据错误信息

  1. 您正在运行 Chrome,
  2. 你没有在脚本标签中设置type="module"

我正在尝试找到一些关于脚本标签的模块类型的好文档,但是this is the best I can find so far

所以,如果你的脚本标签是

<script type="application/javascript">
import {Event} from "event.js";
......
</script>

或者即使是下面的(因为类型是可选的)

<script>
import {Event} from "event.js";
......
</script>

改成

<script type="module">
import {Event} from "event.js";
......
</script>

【讨论】:

  • 我应该在哪里添加?
  • 抱歉,添加了一个链接...&lt;script type="module" ..... 所以,而不是&lt;script type="application/javascript" ....(或者,当然,type 现在对于 javascript 脚本实际上是可选的)
  • @JaromandaX 如果我不使用 HTML 怎么办。我应该在哪里添加脚本标签?
  • @coder123 - 1. 如果您“不使用 HTML” - 那么 无处 可以放置 html SCRIPT 标记。 2 - 这与这个问题和答案有什么关系?
  • 因为我遇到了同样的错误但我不知道如何解决它!
【解决方案2】:

如果您使用的是转译器,您的语法很好,特别是 babel 是当今大多数人使用的转译器。

您可以使用脚本&lt;script type=module src="main.js" /&gt; 中的“模块”类型在现代浏览器中专门启用某些 es6 功能(包括导入和导出),但如果您在本地运行跨源请求,则内容将无法合作,因此您可以托管你的代码在本地使用像express.js这样的网络服务器

网上有很多教程可以帮助您了解如何开始现代 Web 开发,但这里列出了您可以自己研究的主题。

  1. node.js 这是用于执行 javascript 的
  2. express.js 这是用于使用 node.js 创建服务器
  3. es6 这是一个规范,ecmascript (javascript) 的更新“版本”,它具有导入和导出以及对象解构等新功能
  4. babel 这是一个转译器,将新代码(例如 es6)转换成可以在旧系统(例如 es5)上运行的代码
  5. webpack这是一个javascript打包系统,用于组合代码和执行模块,如转译器

有很多东西要学,我们作为一个社区可以改进的最好的地方之一。为避免所有混乱的启动工作,您可以尝试像 https://codesandbox.io/ 这样的项目,该项目旨在简化整个过程。

【讨论】:

    【解决方案3】:

    在您的出口中

    Export default function Event(title,mainText,buttonSet){
        this.title=title;
        this.mainText=mainText,
        this.buttonSet=buttonSet;
    }
    

    在你的导入中

    import Event from "event.js";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 2011-04-07
      • 2014-05-09
      • 2014-11-24
      相关资源
      最近更新 更多