Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

React - Module parse failed: Unexpected Token. You may need an appropriate loader to handle this file type

My first time using react, so apologies if I'm doing something obvious and incredibly wrong. That said, I've read up on several similar-seeming bugs on here and on github and I can't find anything that works for mine. Here's the full error message:

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

The full code from which that error message was drawn:

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'));

I feel like something is wrong with my webpack-config.js, but I copied that directly from a tutorial I was using so I'm not sure why it would be wrong. Here it is, for reference:

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

And here are my package dependencies from package.json:

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

And finally my .babelrc

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

I really have no idea what's going on, so any help would be much appreciated. Please let me know if I left out any relevant info that could be helpful. Thank you.

like image 288
paul45 Avatar asked Sep 06 '20 22:09

paul45


People also ask

What are the most common errors in ReactJS?

7 ReactJS: unexpected token '<' 0 babel doesn't parse async await 3 Webpack throwing error "You may need an appropriate loader" in react with typescript 4 ReactJS: Importing symlinked components error: Module parse failed: Unexpected token: You may need an appropriate loader to handle this file type

Why is Webpack throwing errors in react with typescript?

Webpack throwing error "You may need an appropriate loader" in react with typescript 4 ReactJS: Importing symlinked components error: Module parse failed: Unexpected token: You may need an appropriate loader to handle this file type

Why can’t i load a TSX file in react-scripts?

You need an appropriate TypeScript loader #9127 react-scripts cannot load tsx files that are in adjacent yarn workspace packages. Module parse failed: Unexpected token. You may need an appropriate loader to handle this file type Did you try recovering your dependencies? Yes, yarn --version 1.22.4

Why did my module parse fail?

Module parse failed:.You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file." Bookmark this question. Show activity on this post.


1 Answers

The error comes from this line: return <h1>React App</h1>, because <h1>...</h1> is not valid javascript. Even if rename this is would be parsed as vanilla js and not jsx, because of your webpack-config.js, so there are multiple things you should do to fix it:

  1. Rename App.js to App.jsx,
  2. Update test: /\.js$/, to test: /\.(js|jsx)$/, in webpack-config.js
  3. I think there is also an error in your .babelrc: you don't want that .js there, after "transform-class-properties".
  4. Rename webpack-config.js to webpack.config.js

Here is a tutorial that shows this: https://www.valentinog.com/blog/babel/. Also, you could use https://github.com/facebook/create-react-app that simplifies all of this and provides a great starting config.

like image 180
Porcellus Avatar answered Oct 06 '22 00:10

Porcellus