ReactJS在Safari浏览器上出现“Unexpected Token )”错误

5

我在Safari浏览器中遇到了SyntaxError: Unexpected token ")"的错误,而且这段代码在其他浏览器中都能正常工作。

我使用gulp编译文件的方式如下:

browserify(componentPath + "app.jsx")
    .transform(reactify)
    .transform(babelify)
    .bundle()
    .pipe(source('app.js'))
    .pipe(gulp.dest(buildPath));

语法错误正在突出显示以下内容:
return React.createElement(If, {
     condition: !_.isEmpty(title)
 }, React.createElement("div", {
     className: "row wrapper border-bottom white-bg page-heading"
 }, React.createElement("div", {
     className: "col-lg-9"
 }, React.createElement("h2", null, title || 'Untitled'), React.createElement("ol", {
     className: "breadcrumb"
 }, React.createElement("li", null, React.createElement("a", {
     onClick: () => self.history.pushState(null, home)
 }, "Home")), links.map(function(link, index) {
     var url = link.url;

     return React.createElement("li", {
         onClick: () => self.history.pushState(null, url),
         key: url,
         className: "ptr-click"
     }, index == links.length - 1 ? React.createElement("strong", null, link.title || 'Untitled') : link.title);
 })))));

我将整个部分注释掉,只是为了看看是否是这个特定的代码块,但错误却指向另一个完全相同的React.createElement代码块。

2
如果这段代码没有进一步转译,那很可能是由于 () => {}。我认为Safari目前无法执行箭头函数。http://caniuse.com/#search=arrow - enjoylife
1个回答

3

考虑到mattclemens的评论,Safari目前不支持执行箭头函数。 因此,我更新了我的gulp脚本:

browserify(componentPath + "app.jsx")
    .transform(reactify)
    .transform(babelify, {presets: ["es2015", "react"]})
    .bundle()
    .pipe(source('app.js'))
    .pipe(gulp.dest(buildPath));

当然,不要忘记安装预设:
npm install babel-preset-es2015 babel-preset-react

这很完美,现在我的代码也可以在Safari上运行 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接