[TypeScript] TypeError: Unknown file extension ".ts"
이번에 타입스크립트를 배우게되었는데 타입스크립트에서 간단하게 서버를 열어 테스트를 해보려고하는중 에러가 발생하였습니다.
이미지와 같이 에러가 발생을 하였는데 일단 해석을 해보면 .ts에 확장자 파일을 찾을수가 없다고 해석이 되었습니다. 코드에 문제가 아닌 package.json파일이나 tsconfig.json파일에 문제가 있어 발생을 하는것으로 보였습니다. 그래서 에러를 구글링을 해보니
친절한 stackoverflow에서 답변을 찾을수 있었습니다. 그래서 저의 프로젝트에서도 혹시나 type: module이 작성이되어있나 찾아보니
// package.json
{
"name": "1",
"version": "1.0.0",
"main": "app.js",
"type": "module",
"scripts": {
"start": "ts-node src/app.ts",
"build": "tsc --build",
"clean": "tsc --build --clean"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"@prisma/client": "^5.15.1",
"@types/bcrypt": "^5.0.2",
"@types/express": "^4.17.21",
"dotenv": "^16.4.5",
"express": "^4.19.2",
"prisma": "^5.15.1",
"ts-node": "^10.9.2"
},
"devDependencies": {
"nodemon": "^3.1.4"
}
}
저의 package.json파일에도 작성이 되어있어 제거를 하고 테스트를 해보니
문제가 해결이 되었습니다. 발생하는 원인을 찾아 해결하였지만 원리적으로 문제가 발생하는지 궁금하여 찾아보았더니
1. TypeScript 컴파일러 설정: TypeScript 컴파일러는 기본적으로 CommonJS 모듈 형식을 사용하도록 설정되어 있습니다. package.json에 "type": "module"을 설정하면 ES 모듈 형식을 사용하도록 변경되지만, TypeScript 컴파일러 자체는 이를 인식하지 못합니다.
2. 파일 확장자 처리: TypeScript 컴파일러는 기본적으로 .js 파일만 ES 모듈로 인식합니다. .ts 파일은 CommonJS 모듈로 처리합니다. 따라서 "type": "module"을 설정하면 TypeScript 컴파일러가 .ts 파일을 인식하지 못하게 됩니다.
Can't run my Node.js Typescript project TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /app/src/App.ts
When I try to start my app on Heroku I got the following stack trace. It is just a basic ts.app like you see with ts-node and nodemon. I am really interested in what the answer is going to be. 2020...
stackoverflow.com