使用Node.js时使用ES6的babel笔记

在使用Node.js中的ES6时,需要使用Babel作为转译器,以便进行最基本的环境配置。

所需之物

    • モジュール

babel-cli
date-utils

ファイル

sample_es6.js ※ES6で書かれたjs
.babelrc

简要概括

当我试图在nodejs中使用es6(import/export)并从终端执行 node sample_es6.js时,会出现Uncaught SyntaxError: Unexpected token import的错误,导致无法执行。以下是解决方法的备忘录。

验证

创建一个使用ES6编写的用于验证的js文件。

import 'date-utils';

const now = new Date();
console.log(now.toFormat('YYYY年MM月DD日 HH24時MI分SS秒'));

如果在没有任何准备的情况下使用Node命令执行这个操作

$ node sample_es6.js
...\sample_es6.js:1
(function (exports, require, module, __filename, __dirname) { import 'date-utils';
                                                              ^^^^^^

SyntaxError: Unexpected token import
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:616:28)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:188:16)
    at bootstrap_node.js:609:3

就像这样会发生SyntaxError。我们来解决它。

处理方法

要解决这个问题,需要安装一个名为Babel的工具,将ES6转换为ES5,以便Node能够理解。

首先要安装所需的模块。

$ npm install babel-cli

在父级目录中创建.babelrc文件,并在其中写入以下内容。

{
    "presets": [
        [
            "env", {
                "targets": {
                    "node": "current"
                }
            }
        ]
    ]
}

据称,”node”:”current” 可自动判断节点端需要使用的内容?

在执行以下命令之前,需要全局安装babel-cli,然后运行ES6编写的文件。

这样一来就执行了

$ babel-node sample_es6.js
2018年04月06日 00時15分53秒

顺利执行了而没有出现SyntaxError的问题。

广告
将在 10 秒后关闭
bannerAds