abagh0703
abagh0703

Reputation: 911

"Import in body of module; reorder to top import/first" Across Many Files

I have the same error as this answer, except instead of it just occurring in one file it is occurring in many; once I fix it for one file, another just pops up with the same error. I've seen this answer but whenever I run react-scripts start a node_modules folder is created in my src, so that solution isn't viable.

It would be too time consuming to have to fix every file that has this error every time I compile, so how can I get rid of this error? It seems to just be an eslint issue.

Upvotes: 42

Views: 92961

Answers (15)

ichu
ichu

Reputation: 1

I got the same issue. I solved by added the main imports first

import {useState} from 'react' 

import ('./App.css')

like this!

Upvotes: 0

Shamseer Ahammed
Shamseer Ahammed

Reputation: 1947

you will get this error if you declare variable in between your imports,

import React from 'react';
import axios from 'axios';

const URL = process.env.REACT_APP_API_BASE;

import demoXLXSFile from '../../assets/others/Demo.xlsx';
import './student.list.styles.scss';

declare variables after importing everything,

import React from 'react';
import axios from 'axios';
import demoXLXSFile from '../../assets/others/Demo.xlsx';
import './student.list.styles.scss';

const URL = process.env.REACT_APP_API_BASE;

Upvotes: 115

Himanshu Taviyad
Himanshu Taviyad

Reputation: 11

If I put double Semicolon behind the importing statement than I got "error".you can see difference between two pictures in import './index.css'; is different

For Example :-

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';;
import 'tachyons';
import {robots} from "./Robots";
import reportWebVitals from './reportWebVitals';
import CardList from './CardList';

Upvotes: 0

timothymaarv
timothymaarv

Reputation: 11

If you're experiencing this error in modern versions of react(current version 18.0.0) make sure you're making all your imports before the ReactDOM.createRoot declaration.

For example, I got the error with:

import App from "./App";
import reportWebVitals from "./reportWebVitals";
const root = ReactDOM.createRoot(document.getElementById("root"));
import { Provider } from "./context";

This will result in an error. Instead, import everything before the createRoot:

import App from "./App";
import reportWebVitals from "./reportWebVitals";
import { Provider } from "./context";
const root = ReactDOM.createRoot(document.getElementById("root"));

This will fix the error. Simple fix but it's easy to miss

Upvotes: 1

Muhammad Haidar
Muhammad Haidar

Reputation: 2017

I was facing the same issue when I installed chat.js library in my reactJs project. I solved this issue by moving my chart.Js import to the index.js file

index.js file:

import React from "react";
import ReactDOM from "react-dom";
import { Chart as ChartJS, ArcElement, Tooltip, Legend } from "chart.js"; <--- imported
import "./index.css";
import App from "./App";

ChartJS.register(ArcElement, Tooltip, Legend);  <---- imported

Upvotes: 0

JHM16
JHM16

Reputation: 798

If You are using Component Lazy loading then always put lazy load component import code below normal import code.

Correct Example

import First from './first'
const Second = React.lazy(()=>import("./Second))

Incorrect Example

const Second = React.lazy(()=>import("./Second))
import First from './first'
 

Upvotes: 4

Syed Muhammad Sajjad
Syed Muhammad Sajjad

Reputation: 184

Move all of your imports to the top of the file. Even in case of a require (that is written in between import statements), this error will come.

e.g.

import 'some_module';
require('some_file');
import 'some_other_module');

This would result in an error.

You would want to do this instead:

import 'some_module';
import 'some_other_module');
require('some_file');

Upvotes: 0

MattBowa
MattBowa

Reputation: 99

Happened to me when I put require before import like this:

require('dotenv').config()
import React from 'react';
import ReactDOM from 'react-dom';
...

Solution: Put the require after the imports

Upvotes: 5

yusufskebbe
yusufskebbe

Reputation: 1

I forgot to add {Component} after importing 'react' library to my project, this solved my issue.

Upvotes: 0

Blessing
Blessing

Reputation: 2720

I had forgotten to add from.

Before:

import UpperBlock;

After:

import UpperBlock from "../components/dashboard/shared/UpperBlock";

Make sure you import well your component and then stop the server and restart it again. It worked for me.

Upvotes: 1

Venkat
Venkat

Reputation: 21

Wrong 1.

import React ,{useState ,useEffect} from 'react';
import './App.css';
import Post from './Post';
import db from "./firebase"

Right 2.

import React ,{useState ,useEffect} from 'react';
import './App.css';
import Post from './Post';
import db from "./firebase.js"

//this is code firebase.js

const db = firebaseApp.firestore();
const auth = firebase.auth();
const storage = firebase.storage();

export default {db,auth,storage};

When I change the firebase into firebase.js in Snippet 2. My Error vanished

Upvotes: 2

Yandy Gonzalez
Yandy Gonzalez

Reputation: 51

Moving every import statement to the top of the file solves the issue.

Upvotes: 5

JCode_918
JCode_918

Reputation: 141

I got this same error when I added an extra semicolon ';' at the end of an import statement.

I suggest removing any extraneous semicolons. This should make the error go away.

Upvotes: 14

Dheeraj kumar Rao
Dheeraj kumar Rao

Reputation: 10232

I found this issue while I was using React.lazy in my existing project. I got this error Failed to compile. :- Import in body of module; reorder to top import/first (with create-react-app).

import React from 'react';
import SelectField from '../inputs/SelectField';
const Questions = React.lazy(() => import('./questions'))
import _ from 'lodash';

Solution:-

Only reorder the position i.e. put all import on top then react.lazy.

import React from 'react';
import SelectField from '../inputs/SelectField';
import _ from 'lodash';
const Questions = React.lazy(() => import('./questions'))

Upvotes: 23

pigfly
pigfly

Reputation: 4148

I came across this issue too. I found that you must import all ES6 modules at the top level of your JavaScript files."... the structure of ES6 modules is static, you can’t conditionally import or export things. That brings a variety of benefits.

This restriction is enforced syntactically by only allowing imports and exports at the top level of a module:" From Dr. Axel Rauschmayer’s Exploring JS:

Upvotes: 2

Related Questions