Referenceerror: Cannot Access 'Player' Before Initialization

ReferenceError: Cannot access 'Player' before initialization

I went to the Node.JS forums and asked what could be the issue. Not a babel issue at all, just circular dependencies. For example:

// A.js
import B from './B.js'
export default class A{}
// B.js
import A from './A.js'
export default class B extends A{}

Sorry there wasn't nearly enough information to be able to figure this one out. I got a lot of help on the node.js github and someone looked through my project on github and ended up finding an instance where two modules pointed at each other.

ReferenceError: Cannot access 'players' before initialization

You are trying to modify players variable before it is being initialized , you can useMemo(which runs only if players value change) and modify sortPlayers after it is available and also you were trying to initalize players again that was causing issue

const sortedPlayers =useMemo(()=>{
return players.sort(
(a, b) => a.scorerNumber - b.scorerNumber
);
},[players])

Full Code:

import NewPointsScored from './components/NewPointsScored';
import ScoredPointsList from './components/ScoredPointsList';
import {useMemo} from 'react'

function App() {
const [scorerNumber, setScorerNumber] = useState('');
const [totPoints, setTotPoints] = useState(0);
const [players, setPlayers] = useState([]);

const sortedPlayers =useMemo(()=>{
return players?.sort(
(a, b) => a.scorerNumber - b.scorerNumber
);
},[players])


const onePointHandler = () => {
const _players = [...players];

if (scorerNumber.trim() === 0) {
return;
}

const posit = _players
.map((player) => player.scorerNumber)
.indexOf(+scorerNumber);
if (posit !== -1) {
setPlayers((players) =>
players.map(
(player, i) =>
(i = posit
? { ...player, totPoints: player.totPoints + 1 }
: player)
)
);
} else {
const newScorer = {
id: Math.floor(Math.random() * 1000),
scorerNumber: +scorerNumber,
totPoints: totPoints + 1
};
setPlayers([..._players, newScorer]);
setTotPoints(totPoints);
}
setScorerNumber("");
};
const twoPointsHandler = (e) => {
e.preventDefault();
console.log('scored 2p');
};
const threePointsHandler = (e) => {
e.preventDefault();
console.log('3p Made!');
};
return (
<div className="App">
<NewPointsScored
setScorerNumber={setScorerNumber}
scorerNumber={scorerNumber}
onOneP={onePointHandler}
onTwoP={twoPointsHandler}
onThreeP={threePointsHandler}
/>
<ScoredPointsList sortedPlayers={sortedPlayers} />
</div>
);
}

export default App;

refer sandbox:

Edit points-scored (forked)

unhandledRejection: ReferenceError: Cannot access 'firestore' before initialization

ReferenceError: Cannot access 'variable' before initialization

Line where you declare let addPoints = parseInt(args[2]); should go before message.reply(`Set ${args[1]}'s points to ${addPoints}.`);

Declare it before your if(!data)

          if(Err) console.log(err);
let addPoints = parseInt(args[2]); // <--- HERE
if(!data) {
const newData = new Data({
name: user.username,
userID: user.id,
points: parseInt(args[2])
})
newData.save().catch(err => console.log(err));
message.reply(`Set ${args[1]}'s points to ${addPoints}.`); //<--- HERE
return;
}
data.points=addPoints;

ReferenceError: Cannot access 'Discord' before initialization

Your first two lines look like they should be switched around - first "import", then use.

const Discord = require("discord.js"); 
const client = Discord.Client();

As per the docs:

const Discord = require('discord.js');
const client = new Discord.Client();

client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});

client.on('message', msg => {
if (msg.content === 'ping') {
msg.reply('Pong!');
}
});

client.login('token');


Related Topics



Leave a reply



Submit