Javascript 获取意外的令牌导出

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目标

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

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

您正在使用ES6模块语法

这意味着您的环境(例如node.js)必须支持ES6模块语法

NodeJS使用CommonJS模块语法(
Module.exports
)而不是ES6模块语法(
export
关键字)

解决方案:

  • 使用
    babel
    npm包将您的ES6传输到
    commonjs
    目标

  • 使用CommonJS语法进行重构
CommonJS语法的示例有(来自):

  • exports.uppercase=str=>str.toUpperCase()
  • exports.a=1

您正在使用ES6模块语法

这意味着您的环境(例如node.js)必须支持ES6模块语法

NodeJS使用CommonJS模块语法(
Module.exports
)而不是ES6模块语法(
export
关键字)

解决方案:

  • 使用
    babel
    npm包将您的ES6传输到
    commonjs
    目标

  • 使用CommonJS语法进行重构
CommonJS语法的示例有(来自):

  • exports.uppercase=str=>str.toUpperCase()
  • exports.a=1

使用ES6 add
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备选方案<