我试图在我的项目中运行一些ES6代码,但我得到了一个意外的令牌导出错误。
export class MyClass {
constructor() {
console.log("es6");
}
}
我试图在我的项目中运行一些ES6代码,但我得到了一个意外的令牌导出错误。
export class MyClass {
constructor() {
console.log("es6");
}
}
当前回答
通常import不能在.js扩展名中工作,因为默认情况下js意味着javascript的cjs版本。如果你想要es6特性,你需要将.js扩展名重命名为.mjs扩展名
parent.mjs
export default class Car {
constructor(brand) {
this.carname = brand;
}
present() {
return 'I have a ' + this.carname;
}
}
child.mjs
import Car from './parent.mjs'
export default class Model extends Car {
constructor(brand, mod , country) {
super(brand);
this.model = mod;
this.country = country;
}
show() {
return this.present() + ', it is a ' + this.model + "i am from " +
this.country;
}
}
index . html
<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0,
shrink-to-fit=no">
<title>Quick Start Pack Template</title>
</head>
<div class="demo"></div>
<script type="module">
import Model from './child.mjs'
let value = new Model("Ford", "Mustang", "bangladesh")
document.querySelector(".demo").innerHTML = value.show()
</script>
</body>
</html>
最后在活动服务器上运行此代码
其他回答
如果遇到此错误,也可能与将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 );
只需使用tsx作为运行时而不是节点。它将允许你使用正常的import语句,而不必将你的项目切换到type: module,也不必处理type: module的讨厌后果。此外,你还将获得TypeScript支持。
此时没有必要使用Babel (JS已经变得非常强大),因为您可以简单地使用默认的JavaScript模块导出。查看完整教程
Message.js
module.exports = 'Hello world';
app.js
var msg = require('./Messages.js');
console.log(msg); // Hello World
使用ES6语法不能在node中工作,不幸的是,你必须有babel显然使编译器理解语法,如导出或导入。
npm install babel-cli --save
现在我们需要创建一个.babelrc文件,在babelrc文件中,我们将设置babel使用我们在编译到ES5时安装的es2015预设。
在应用程序的根目录下,我们将创建一个.babelrc文件。 $ NPM install babel-preset-es2015—保存
在应用程序的根目录下,我们将创建一个.babelrc文件。
{ "presets": ["es2015"] }
希望它有用…:)
对于那些在2022年看到这篇文章的人来说,我也犯了同样的错误,但我把代码改成了这样:
module.exports = () => {
getUsers: () => users;
addUser: (user) => users.push(user);
};