【问题标题】:React - Module parse failed: Unexpected Token. You may need an appropriate loader to handle this file typeReact - 模块解析失败:意外的令牌。您可能需要适当的加载程序来处理此文件类型
【发布时间】:2020-09-06 22:26:01
【问题描述】:

我第一次使用 react,如果我做的事情明显而且非常错误,请道歉。也就是说,我已经在这里和 github 上阅读了几个看起来相似的错误,但我找不到任何适合我的东西。以下是完整的错误信息:

ERROR in ./src/frontend/src/components/App.js 6:15
Module parse failed: Unexpected token (6:15)
You may need an appropriate loader to handle this file type.
| class App extends Component{
|     render() {
>         return <h1>React App</h1>
|     }
| }
 @ ./src/frontend/src/index.js 1:0-35

提取该错误消息的完整代码:

import React, { Component } from 'react';
import ReactDOM from 'react-dom';

class App extends Component{
    render() {
        return <h1>React App</h1>
    }
}

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

我觉得我的 webpack-config.js 有问题,但我直接从我正在使用的教程中复制了它,所以我不确定它为什么会出错。在这里,供参考:

module.exports = {
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader"
        }
      }
    ]
  }
}

这是我在 package.json 中的包依赖项:

"dependencies": {
    "prop-types": "^15.7.2",
    "react": "^16.13.1",
    "react-dom": "^16.13.1"
  },

最后是我的 .babelrc

{
    "presets": ["@babel/preset-env","@babel/preset-react"],
    "plugins": ["transform-class-properties".js]
}

我真的不知道发生了什么,所以任何帮助将不胜感激。如果我遗漏了任何可能有用的相关信息,请告诉我。谢谢。

【问题讨论】:

    标签: javascript reactjs babeljs babel-loader


    【解决方案1】:

    错误来自这一行:return &lt;h1&gt;React App&lt;/h1&gt;,因为&lt;h1&gt;...&lt;/h1&gt; 不是有效的javascript。即使重命名这将被解析为 vanilla js 而不是 jsx,因为您的 webpack-config.js,所以您应该做很多事情来修复它:

    1. App.js重命名为App.jsx
    2. 在 webpack-config.js 中将 test: /\.js$/, 更新为 test: /\.(js|jsx)$/,
    3. 我认为你的.babelrc 中也有一个错误:你不想在"transform-class-properties" 之后出现.js
    4. webpack-config.js 重命名为webpack.config.js

    这里有一个教程说明了这一点:https://www.valentinog.com/blog/babel/。此外,您可以使用 https://github.com/facebook/create-react-app 来简化所有这些并提供出色的初始配置。

    【讨论】:

    • 非常感谢。按照这些步骤修复了我发布的错误。但是下一行现在正在生成相同的错误: ReactDOM.render(, document.getElementById('app'));如果您对为什么会发生这种情况有任何见解,我将不胜感激。否则,感谢您的帮助。
    • 你能用新的错误更新问题吗?只是指向不同的行,实际上是同一个错误吗?
    • 我发现了错误。我将 webpack 配置文件命名为“webpack-config.js”,但它实际上应该是“webpack.config.js” 真的非常愚蠢,但至少一旦我意识到这是一个简单的修复。感谢您的帮助。
    • 我很高兴它起作用并将其添加到我的答案中以保持信息有序。如果一切正常,你能接受它作为答案吗?
    猜你喜欢
    • 2018-07-12
    • 2022-08-09
    • 2019-02-26
    • 2021-12-04
    • 2022-11-10
    • 2018-02-27
    • 2019-01-28
    • 2021-02-10
    • 1970-01-01
    相关资源
    最近更新 更多