Javascript 获取意外的令牌导出
我试图在我的项目中运行一些ES6代码,但是我得到了一个意外的令牌导出错误Javascript 获取意外的令牌导出,javascript,ecmascript-6,webpack,babeljs,Javascript,Ecmascript 6,Webpack,Babeljs,我试图在我的项目中运行一些ES6代码,但是我得到了一个意外的令牌导出错误 export class MyClass { constructor() { console.log("es6"); } } 您正在使用ES6模块语法 这意味着您的环境(例如node.js)必须支持ES6模块语法 NodeJS使用CommonJS模块语法(Module.exports)而不是ES6模块语法(export关键字) 解决方案: 使用babelnpm包将您的ES6传输到commonjs目标
export class MyClass {
constructor() {
console.log("es6");
}
}
您正在使用ES6模块语法 这意味着您的环境(例如node.js)必须支持ES6模块语法 NodeJS使用CommonJS模块语法(
Module.exports
)而不是ES6模块语法(export
关键字)
解决方案:
- 使用
npm包将您的ES6传输到babel
目标commonjs
- 使用CommonJS语法进行重构
exports.uppercase=str=>str.toUpperCase()
exports.a=1
Module.exports
)而不是ES6模块语法(export
关键字)
解决方案:
- 使用
npm包将您的ES6传输到babel
目标commonjs
- 使用CommonJS语法进行重构
exports.uppercase=str=>str.toUpperCase()
exports.a=1
babel预设环境
在您的.babelrc
中:
{
"presets": ["@babel/preset-env"]
}
答案更新感谢@ghanbari评论应用巴别塔7 使用ES6添加巴别塔预设环境
在您的.babelrc
中:
{
"presets": ["@babel/preset-env"]
}
答案更新感谢@ghanbari评论应用巴别塔7 如果出现此错误,可能还与如何将JavaScript文件包含到html页面中有关。加载模块时,必须显式声明这些文件。下面是一个例子:
//module.js:
function foo(){
return "foo";
}
var bar = "bar";
export { foo, bar };
当您包含这样的脚本时:
<script src="module.js"></script>
如果出现此错误,可能还与如何将JavaScript文件包含到html页面中有关。加载模块时,必须显式声明这些文件。下面是一个例子:
//module.js:
function foo(){
return "foo";
}
var bar = "bar";
export { foo, bar };
当您包含这样的脚本时:
<script src="module.js"></script>
使用ES6语法在node中不起作用,不幸的是,您必须使用babel,以使编译器理解诸如导出或导入之类的语法
npm install babel-cli --save
现在我们需要创建一个.babelrc文件,在babelrc文件中,我们将设置babel使用我们在编译到ES5时安装的es2015预设作为其预设
在应用程序的根目录下,我们将创建一个.babelrc文件。
$npm安装babel-preset-es2015--保存
在应用程序的根目录下,我们将创建一个.babelrc文件
{ "presets": ["es2015"] }
希望它能起作用……:) 使用ES6语法在node中不起作用,不幸的是,您必须使用babel使编译器理解语法,例如导出或导入
npm install babel-cli --save
现在我们需要创建一个.babelrc文件,在babelrc文件中,我们将设置babel使用我们在编译到ES5时安装的es2015预设作为其预设
在应用程序的根目录下,我们将创建一个.babelrc文件。
$npm安装babel-preset-es2015--保存
在应用程序的根目录下,我们将创建一个.babelrc文件
{ "presets": ["es2015"] }
希望它能起作用……:) 安装babel软件包@babel/core
和@babel/preset
,这些软件包将把ES6转换为commonjs目标,因为node js无法直接理解ES6目标
npm安装——保存dev@babel/core@babel/preset env
然后,您需要在项目的根目录中创建一个名为.babelrc
的配置文件,并在其中添加此代码
{
“预设”:[“@babel/preset env”]
}
安装babel软件包@babel/core
和@babel/preset
,这些软件包将把ES6转换为commonjs目标,因为节点js不直接理解ES6目标
npm安装——保存dev@babel/core@babel/preset env
然后,您需要在项目的根目录中创建一个名为.babelrc
的配置文件,并在其中添加此代码
{
“预设”:[“@babel/preset env”]
}
现在不需要使用Babel(JS已经变得非常强大),因为您可以简单地使用默认的JavaScript模块导出
Message.js
module.exports = 'Hello world';
var msg = require('./Messages.js');
console.log(msg); // Hello World
app.js
module.exports = 'Hello world';
var msg = require('./Messages.js');
console.log(msg); // Hello World
现在不需要使用Babel(JS已经变得非常强大),因为您可以简单地使用默认的JavaScript模块导出
Message.js
module.exports = 'Hello world';
var msg = require('./Messages.js');
console.log(msg); // Hello World
app.js
module.exports = 'Hello world';
var msg = require('./Messages.js');
console.log(msg); // Hello World
我通过创建一个入口点文件修复了这个问题,如
//index.js
require=require('esm')(模块)
module.exports=require('./app.js')
以及我在app.js中导入的任何文件
及以后使用的导入/导出
现在只需像node index.js
注意:如果
app.js
使用export default
,这将成为require('./app.js')。使用入口点文件时的默认值。
//index.js
require=require('esm')(模块)
module.exports=require('./app.js')
以及我在app.js中导入的任何文件
及以后使用的导入/导出
现在只需像node index.js
注意:如果app.js
使用export default
,当使用入口点文件时,这将成为require('./app.js')。default
。我的2美分
出口
ES6
myClass.js
其他.js
CommonJS备选方案
myClass.js
其他.js
导出默认值
ES6
myClass.js
其他.js
CommonJS备选方案
myClass.js
其他.js
希望这能帮到我的两分钱
出口
ES6
myClass.js
其他.js
CommonJS备选方案<