node.js - Node js säger okänd filändelse .ts när man försöker köra npm start
Jag gjorde ett litet serverskript i JS med Express och jag ändrade mig och ville konvertera det till TS så jag gjorde det, men sedan jag gjorde det skickar Node ett felmeddelande som säger att okänd filändelse .ts varje gång jag försöker köra npm start
Det här är felet:
PS C:\Users\aryan\OneDrive\Documents\GitHub\spacious-forms> npm start
> [email start
> npx ts-node --esm src/server.ts
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for C:\Users\aryan\OneDrive\Documents\GitHub\spacious-forms\src\server.ts
at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:160:9)
at defaultGetFormat (node:internal/modules/esm/get_format:203:36)
at defaultLoad (node:internal/modules/esm/load:141:22)
at async nextLoad (node:internal/modules/esm/hooks:749:22)
at async nextLoad (node:internal/modules/esm/hooks:749:22)
at async Hooks.load (node:internal/modules/esm/hooks:382:20)
at async MessagePort.handleMessage (node:internal/modules/esm/worker:199:18) {
code: 'ERR_UNKNOWN_FILE_EXTENSION'
}
Detta är min package.json-fil
{
"name": "spacious-forms",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"start": "npx ts-node --esm src/server.ts",
"dev": "vite",
"build": "vue-tsc && vite build",
"preview": "vite preview"
},
"dependencies": {
"vue": "^3.3.8"
},
"devDependencies": {
"@types/express": "^4.17.21",
"@types/md5": "^2.3.5",
"@types/node": "^20.10.0",
"@vitejs/plugin-vue": "^4.5.0",
"express": "^4.18.2",
"md5": "^2.3.0",
"sqlite3": "^5.1.6",
"tailwindcss": "^3.3.5",
"ts-node": "^10.9.1",
"typescript": "^5.3.2",
"vite": "^5.0.0",
"vue-tsc": "^1.8.22"
}
}
Här är min tsconfig.json
{
"compilerOptions": {
"esModuleInterop": true,
"useDefineForClassFields": true,
"module": "ESNext",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"skipLibCheck": true,
"paths": {
"@/*": [
"./*"
]
},
/* Bundler mode */
"moduleResolution": "node",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve",
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true
},
"ts-node": {
"esm":true
},
"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue", "../src/vite-env.d.ts", "../src/main.ts", "vue.d.ts", "vue.d.ts"],
"references": [{ "path": "./tsconfig.node.json" }]
}
Jag har surfat på webben och försökt alla lösningar, inklusive att byta ES-versioner, använda ts-node och allt annat, men inget fungerar
Redigera :
Jag ändrade modulupplösningens "node" i 'tsconfig.json' till "Node" men jag får samma fel
Svar #1
Tydligen är problemet med ts-node. Det fungerar helt enkelt inte ordentligt för mig, så jag använde tsx vilket löste problemet och servern körs nu utan några problem.
försök
npm i -g tsxnpx tsx src/server.jsDet löste problemet för mig
Svar #2
om du använder node v20, lägg till detta i din ts.config-fil
{
"compilerOptions": {
//..
},
"ts-node": {
"esm": true,
"experimentalSpecifierResolution": "node",
},
}Kör sedan node --experimental-loader --loader ts-node/esm src/app.ts att göra detta kommer att lösa problemet men kommer att förbruka mycket av din CPU. Jag föredrar att nedgradera till node vs 18.x eller (jag föredrar v18.17.1) tills problemet är löst på node v20.
