简体   繁体   English

ReactJS:意外标记“<”

[英]ReactJS: unexpected token '<'

Hello I tried to search in other questions but none of mentioned solutions I tried did not work for me.您好,我尝试搜索其他问题,但我尝试的上述解决方案都没有对我有用。

When using command:使用命令时:

npm start启动

I have an error:我有一个错误:

ERROR in ./src/index.js Module build failed (from ./node_modules/babel-loader/lib/index.js): SyntaxError: D:/Kodilla/Projekty/webpack-to-do-app/src/index.js: Unexpected > token (6:4) 5 | ReactDOM.render( 6 | <App />, | ^ 7 | document.getElementById('app') 8 | );错误在 ./src/index.js 模块构建失败(来自 ./node_modules/babel-loader/lib/index.js):语法错误:D:/Kodilla/Projekty/webpack-to-do-app/src/index.js js: 意外 > 令牌 (6:4) 5 | ReactDOM.render( 6 | <App />, | ^ 7 | document.getElementById('app') 8 | ); 5 | ReactDOM.render( 6 | <App />, | ^ 7 | document.getElementById('app') 8 | );

Defined command in package.json: package.json 中定义的命令:

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "webpack"
  },

index.js file: index.js 文件:

import React from 'react';
import ReactDOM from 'react-dom';
import App from './containers/App';

ReactDOM.render(
    <App />,
    document.getElementById('app')
);

App.js file: App.js 文件:

import React from 'react';
import uuid from 'uuid';
import style from './App.css';

class App extends React.Component {
    constructor(props){
        super(props);
        this.state = {
            data: []
        };
    }
    addTodo(val){
        const todo = {
            text: val,
            id: uuid.v4(),
        };
        const data = [...this.state.data, todo];
        this.setState({data});
    }
    removeTodo(id) {
        const remainder = this.state.data.filter(todo => todo.id !== id);
        this.setState({data: remainder});
    }
    render() {
        return (
            <div className={style.TodoApp}>
                Tutaj pojawią się komponenty naszej aplikacji.
            </div>
        );
    }
}

export default App;

webpack.config.js file: webpack.config.js 文件:

const path = require('path');

module.exports = {
    entry: './src/index.js',
        output: {
        path: path.resolve(__dirname, 'build'),
        filename: 'app.bundle.js'
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                loader: "babel-loader"
            },
            {
                test: /\.css$/,
                use: [
                    { loader: 'style-loader'},
                    {
                        loader: 'css-loader',
                        options: {
                            modules: true
                        }
                    }
                ]
            }
        ]
    }
};

.babelrc file: .babelrc 文件:

{
    "presets": [
        ["env", "react"]
    ]
}

Link to repository链接到存储库

Edit: I tried the solution from post you suggest I duplicate but copied 1:1 did not work for me.编辑:我尝试了您建议我复制的帖子中的解决方案,但复制的 1:1 对我不起作用。 I changed my webpack config to:我将我的 webpack 配置更改为:

module: {
    loaders: [...
      {
      test: /\.(js|jsx)?$/,
        loader: 'babel-loader',
        query: {
           presets: ['es2015', 'react']
        }
    }]
  },

and problem still occurrs.和问题仍然发生。 I think I may be doing something wrong in other place than in mentioned example.我想我可能在提到的例子之外的其他地方做错了。

Edit 2:编辑2:

  1. I use babel-core@6.26.3 and babel-loader@7.1.5 because these are requirement of the project.我使用 babel-core@6.26.3 和 babel-loader@7.1.5 因为这些是项目的要求。
  2. React and react-dom dependencies installed.安装了 React 和 react-dom 依赖项。
  3. Presets: react.预设:反应。 env, es2015, stage-0 installed by env, es2015, stage-0 安装者

    npm install babel-preset-... --save-dev. npm install babel-preset-... --save-dev.

  4. First suggested .babelrc config done:首先建议 .babelrc 配置完成:

    "presets": ["react", "es2015", "stage-0"] “预设”:[“反应”,“es2015”,“stage-0”]

  5. Error occurrs:发生错误:

    Couldn't find preset "@babel/preset-env" relative to directory "...webpack-to-do-app\\node_modules\\css-loader"找不到相对于目录“...webpack-to-do-app\\node_modules\\css-loader”的预设“@babel/preset-env”

What am I still doing wrong?我还做错了什么?

Problem was solved.问题解决了。

Things that helped: 1. Update presets from babel-env, babel-react to @babel/preset-env and @babel/preset-react.有帮助的事情: 1. 将预设从 babel-env、babel-react 更新为 @babel/preset-env 和 @babel/preset-react。 @babel-core was installed but babel-core stayed on place. @babel-core 已安装,但 babel-core 留在原地。 Final set:最终集:

"devDependencies": {
    "@babel/core": "^7.2.2",
    "@babel/preset-env": "^7.2.3",
    "@babel/preset-react": "^7.0.0",
    "babel": "^6.23.0",
    "babel-core": "^6.26.3",
    "babel-loader": "^8.0.4",
    "css-loader": "^2.1.0",
    "react": "^16.7.0",
    "react-dom": "^16.7.0",
    "style-loader": "^0.23.1",
    "webpack": "^4.28.2",
    "webpack-cli": "^3.1.2"
  },

2. Uninstall and install babel-loader which caused problem with requiring wrong version of babel itself. 2. 卸载并安装 babel-loader 导致需要错误版本的 babel 本身的问题。 @Alireza your suggestion was partially right. @Alireza 您的建议部分正确。 Thanks for helping.谢谢你的帮助。

please consider put below config on your .babelrc请考虑将以下配置放在您的 .babelrc 上

{
    "presets": ["react", "es2015", "stage-0"]
}

it should work.它应该工作。 also i see that you have nested array inside "presets".我还看到您在“预设”中嵌套了数组。 every preset should be one of presets elements.每个预设都应该是预设元素之一。

and i'm strongly recommend that you use latest babel(version 7).我强烈建议您使用最新的 babel(版本 7)。 when you upgrade to babel 7 you should download @babel/preset-react and @babel/preset-env and that should be enough.当你升级到 babel 7 时,你应该下载@babel/preset-react@babel/preset-env就足够了。 and .babelrc will look like this: .babelrc 将如下所示:

{
  "presets": [
    "@babel/react",
    "@babel/env"
  ]
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM