Laravel中的React正在获取SyntaxError意外令牌

时间:2018-10-17 22:35:08

标签: reactjs laravel-mix

我知道这个问题已经问了很多,但是我找不到答案。任何帮助将不胜感激,谢谢!

根据在Laravel中发表的关于在Laravel中做出反应的帖子,Jeffrey Way说: 只要做:

mix.react('src', 'output');

我们将安装所有必需的Babel插件并设置您的.babelrc。

在我的项目中,我目前有一个组件,在我的反应混合文件中,我有这个组件:

mix.react('resources/assets/js/basicapp.js', 'public/js');

我的basicapp.js文件是一个简单的组件设置,如下所示:

require('./components/Reactapp');

当我运行mix时,会产生错误: 模块构建失败:SyntaxError:意外令牌(43:17)

  41 |   }
  42 | 
> 43 |   toggleSelected = (id, key) => {
     |                  ^
  44 |     let temp = [...this.state[key]]
  45 |     temp[id].selected = !temp[id].selected
  46 |     this.setState({

我已经为此花了两天时间!任何帮助将不胜感激。

编辑:根据Jeffrey Way的指示检查后没有.babelrc文件,这应该由laravel自动完成。

3 个答案:

答案 0 :(得分:1)

经过进一步审查,Laravel不仅可以与es6一起使用。我必须添加一个.babelrc文件,然后将一些依赖项添加到package.json

我将其添加到package.json devDependencies:

"babel-cli": "^6.26.0",
"babel-eslint": "^8.2.6",
"babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.7.0",
"babel-preset-stage-0": "^6.24.1",

这已经在那里:

"babel-preset-react": "^6.24.1",

在.babelrc文件中,我添加了以下内容:

{
    "presets": [
        "react",
        "stage-0",
        [
            "env",
            {
                "targets": {
                    "browsers": [
                        "last 2 versions",
                        "safari >= 7"
                    ]
                }
            }
        ]
    ],
    "plugins": [
        [
            "babel-plugin-transform-class-properties"
        ]
    ]
}

答案 1 :(得分:0)

我将其留为评论,但我没有足够的意见要发表。但是,如果您不使用es6语法,是否可行?

toggleSelected(id, key){}

答案 2 :(得分:0)

toggleSelected = (id, key) => {
......
}

您正在为事件处理程序使用所谓的类字段/属性语法。 此语法是实验性功能,只有在提供以下内容时才能使用: @ babel / plugin-proposal-class-properties
参见proposal class properties

您需要使用以下命令安装插件:

npm install --save-dev @babel/plugin-proposal-class-properties