npm - Hvordan løser jeg TypeScript-feilen for valgfri kjeding «TS1109: Expression expected» i VS Code?
Bare for litt bakgrunn lager jeg en Discord-bot ved hjelp av discord.js. Jeg følger for øyeblikket denne videoveiledningen (lenket til tidsstempelet der jeg har et problem) og jeg har kopiert nøyaktig det som er gjort frem til det punktet.
Her er versjonene av alt jeg bruker:
- VS Code: 1.65.2
- Node: 16.14.2
- npm: 8.5.0
- TypeScript: 4.6.2
- dotenv: 16.0.0
- discord.js: 13.6.0
- nodemon: 2.0.15
Jeg legger inn koden min og feilene under, men her er også en SrcShare: SrcShare-lenke
index.ts
import DiscordJS, { Intents } from 'discord.js'
import dotenv from 'dotenv'
dotenv.config()
const client = new DiscordJS.Client({
intents: [
Intents.FLAGS.GUILDS,
Intents.FLAGS.GUILD_MESSAGES
],
})
client.on('ready', () => {
console.log('The bot is ready.')
const guildId = '276237909378465794'
const guild = client.guilds.cache.get(guildId)
let commands
if (guild) {
commands = guild.commands
} else {
commands = client.application?.commands
}
commands?.create({
name: 'ping',
description: 'Replies with pong.',
})
})
client.login(process.env.TOKEN)
Feil jeg får når jeg kjører ts-node index.ts i terminalen
return new TSError(diagnosticText, diagnosticCodes)
^
TSError: ⨯ Unable to compile TypeScript:
index.ts(22,39): error TS1109: Expression expected.
index.ts(23,5): error TS1005: ':' expected.
index.ts(25,14): error TS1109: Expression expected.
index.ts(29,1): error TS1005: ':' expected.
[nodemon] app crashed - waiting for file changes before starting...
Jeg har prøvd løsningene fra dette andre StackOverflow-innlegget der problemet også ser ut til å være valgfri kjeding med ?-operatoren. Alle løsningene i den tråden sier at du må oppdatere til TypeScript 3.7+ hvor valgfri kjeding støttes, men jeg bruker TypeScript 4.6.2.
Hvis noen vet hva som foregår her, ville jeg sette pris på hjelpen!
OPPDATERING
Så jeg tror dette kan være et problem med nodemon. Hvis jeg kjører ts-node index.ts i terminalen, starter boten uten feil. Men i package.json har jeg et skript som ser slik ut: "dev": "nodemon index.ts". Når jeg kjører npm run dev, får jeg fortsatt de feilene som er vist ovenfor, selv om nodemon bare skal kjøre ts-node index.ts.
Svar #1
Sjekk node_modules-mappen for å se om du faktisk bruker den versjonen av TypeScript du tror du bruker. Mitt problem var at en pakke jeg var avhengig av, avhang av TypeScript 3.4.3 og installerte den versjonen i prosjektets node_modules-mappe.
Oppdatering av pakken til en som ikke spesifiserte hvilken TypeScript-versjon den er avhengig av, løste problemet for meg.