我试图在我的项目中运行一些ES6代码,但我得到了一个意外的令牌导出错误。

export class MyClass {
  constructor() {
    console.log("es6");
  }
}

当前回答

实际上我想添加一个简单的解决方案。使用常量反撇号(')。

const model = `<script type="module" src="/"></<script>`

其他回答

我让模块工作了一段时间,然后它们没有出现这个Uncaught SyntaxError:意外的令牌导出错误。

结果是,我添加了一个开大括号而没有一个闭大括号。喜欢的东西:

if (true) {
/* } missing here */

export function foo() {}

虽然最大的错误是忘记了end},但解析器首先在大括号内找到一个导出,这是不允许的。

export关键字必须在文件的顶层。

So:

if (true) {
    export function foo() {}
}

也不合法。当解析器遇到这种情况时,它立即停止解析,模糊地宣布错误使用了export,并给出与加载使用export关键字的“非模块”JavaScript文件时相同的错误。它从不报告底层缺少大括号错误。

我花了很长时间才弄明白,所以我在这里发帖,以帮助未来的患者。

理想情况下,解析器将报告只允许在文件的顶层导出。

可能的答案

我有这个问题,在我的情况下发生的是,我缺乏添加扩展到文件 < <文件。ts > >

//✅使用模块。出口而不是出口 模块。出口= { 人, };

如果遇到此错误,也可能与将JavaScript文件包含到html页面的方式有关。在加载模块时,必须显式地声明这些文件。这里有一个例子:

//module.js:
function foo(){
   return "foo";
}

var bar = "bar";

export { foo, bar };

当你像这样包含脚本时:

<script src="module.js"></script>

你会得到错误:

Uncaught SyntaxError:意外的令牌导出

你需要包含一个type属性设置为"module"的文件:

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

然后它应该会像预期的那样工作,你已经准备好在另一个模块中导入你的模块了:

import { foo, bar } from  "./module.js";

console.log( foo() );
console.log( bar );

使用ES6语法不能在node中工作,不幸的是,你必须有babel显然使编译器理解语法,如导出或导入。

npm install babel-cli --save

现在我们需要创建一个.babelrc文件,在babelrc文件中,我们将设置babel使用我们在编译到ES5时安装的es2015预设。

在应用程序的根目录下,我们将创建一个.babelrc文件。 $ NPM install babel-preset-es2015—保存

在应用程序的根目录下,我们将创建一个.babelrc文件。

{  "presets": ["es2015"] }

希望它有用…:)