我试图在我的项目中运行一些ES6代码,但我得到了一个意外的令牌导出错误。
export class MyClass {
constructor() {
console.log("es6");
}
}
我试图在我的项目中运行一些ES6代码,但我得到了一个意外的令牌导出错误。
export class MyClass {
constructor() {
console.log("es6");
}
}
当前回答
我遇到过这个问题,我花了一个小时才找到我的问题。
问题是我正在将我的代码从非模块更改为模块,并且我忘记删除导入的脚本文件。
我的“table.js”文件有以下一行。这是模块文件。
export function tableize(tableIdentifier) {
我的“orderinquiry.js”文件有以下一行。
import { tableize, changeColumnSizesDynamic } from '../common/table.js';
我的“orderinquiry.html”有以下两行。
<script src='/resources/js/common/table.js'></script>
<script type='module' src='/resources/js/client/orderinquiry.js'></script>
而第二行很好,声明type='module。但是第一行直接链接到table.js,导致了意外的错误。一切开始工作时,我删除了第一个<脚本>。
其他回答
使用ES6语法不能在node中工作,不幸的是,你必须有babel显然使编译器理解语法,如导出或导入。
npm install babel-cli --save
现在我们需要创建一个.babelrc文件,在babelrc文件中,我们将设置babel使用我们在编译到ES5时安装的es2015预设。
在应用程序的根目录下,我们将创建一个.babelrc文件。 $ NPM install babel-preset-es2015—保存
在应用程序的根目录下,我们将创建一个.babelrc文件。
{ "presets": ["es2015"] }
希望它有用…:)
我遇到过这个问题,我花了一个小时才找到我的问题。
问题是我正在将我的代码从非模块更改为模块,并且我忘记删除导入的脚本文件。
我的“table.js”文件有以下一行。这是模块文件。
export function tableize(tableIdentifier) {
我的“orderinquiry.js”文件有以下一行。
import { tableize, changeColumnSizesDynamic } from '../common/table.js';
我的“orderinquiry.html”有以下两行。
<script src='/resources/js/common/table.js'></script>
<script type='module' src='/resources/js/client/orderinquiry.js'></script>
而第二行很好,声明type='module。但是第一行直接链接到table.js,导致了意外的错误。一切开始工作时,我删除了第一个<脚本>。
只需使用tsx作为运行时而不是节点。它将允许你使用正常的import语句,而不必将你的项目切换到type: module,也不必处理type: module的讨厌后果。此外,你还将获得TypeScript支持。
//✅使用模块。出口而不是出口 模块。出口= { 人, };
如果遇到此错误,也可能与将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 );