旧版浏览器(非ES6)上出现意外令牌

时间:2019-02-06 10:33:34

标签: javascript babeljs

我正在尝试弄清楚为什么在较旧的浏览器中某些代码出现错误:

res\values\*.xml

我得到:

  

未捕获的SyntaxError:意外令牌=>

我正在使用 Babel 非ES6 兼容设备的代码进行后期处理,但由于某种原因,它没有发挥其魔力:

https://babeljs.io/docs/en/babel-plugin-transform-es2015-arrow-functions

我的 var the_dates = new Array(); Array.prototype.map.call(instance.days.children, i => { the_dates.push(makeDateInFormatUK(i.dateObj)); }); 如下:

.babelrc

我用:

{
  "plugins": [
    [
    "transform-es2015-template-literals", {
      "loose": true,
      "retainLines": true
    },
    "transform-es2015-arrow-functions"
    ]
  ]
}

没有错误,但是当我查看输出的文件时,仍然得到:

babel /home/chambres/web/x.org/public_html/2018/js/lib/resa-booking.js > /home/chambres/web/x.org/public_html/2018/js/lib-non-es6/resa-booking.js

更新:作为测试,我创建了一个 test.js 文件,该文件具有:

var the_dates = new Array();
Array.prototype.map.call(instance.days.children, i => {
    the_dates.push(makeDateInFormatUK(i.dateObj));
});

我的.bablerc文件具有:

var a = () => {};

var bla = 1213;
var test = `foo bar ${bla}`;

运行它,我得到:

{
  "plugins": ["@babel/plugin-transform-arrow-functions"]
}

几乎就像只是忽略了 .bablrc 文件一样。如果我使用以下命令运行它:

babel /home/chambres/web/x.org/public_html/2018/js/lib/test.js

var a = () => {};

var bla = 1213;
var test = "foo bar " + bla;

我在做什么错?

1 个答案:

答案 0 :(得分:2)

首先,您的.babelrc是错误的( template-literals插件的数组应该在选项之后关闭

应该是

{
  "plugins": [
    [
    "transform-es2015-template-literals", {
      "loose": true,
      "retainLines": true
    }],
    "transform-es2015-arrow-functions"
  ]
}

第二部分,您说.bablerc文件包含的内容...,并想知道.bablrc是否被完全忽略。两者都是错误的名称(应为.babelrc ),因此请确保文件名正确。