Picture of the author
ROXIE.
DEV
node.js로 서버 세팅 시 에러package.json에서 scripts작성 방법과 tsconfig.json파일 설정에 대해 알아본다.
node.js로 서버 세팅 시 에러

들어가며 이번 포스팅에서는 Node.js로 서버를 typescript를 적용하여 셋팅할 때 발생한 문제에 대해 적어보려고 한다. ## 문제 상황 > Error Message > [nodemon] starting ts-node ./src/app.ts TypeError > [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for > D:\Project\blog\server\src\app.ts at new NodeError > (node:internal/errors:405:5) at Object.getFileProtocolModuleFormat [as > file:] (node:internal/modules/esm/get_format:79:11) at > defaultGetFormat (node:internal/modules/esm/get_format:124:36) at > defaultLoad (node:internal/modules/esm/load:84:20) at nextLoad > (node:internal/modules/esm/loader:163:28) at ESMLoader.load > (node:internal/modules/esm/loader:603:26) at ESMLoader.moduleProvider > (node:internal/modules/esm/loader:457:22) at new ModuleJob > (node:internal/modules/esm/module_job:64:26) at > ESMLoader.#createModuleJob (node:internal/modules/esm/loader:480:17) > at ESMLoader.getModuleJob (node:internal/modules/esm/loader:434:34) { > code: 'ERR_UNKNOWN_FILE_EXTENSION' } [nodemon] app crashed - waiting > for file changes before starting... ## 해결 처음 에러는 package.json파일에서 .ts파일을 찾지 못한 에러가 났다. 컴파일러는 타입스크립트 파일을 자바스크립트 파일로 변환하기 때문에 npm run build 명령을 통해 변환된 app.js 파일로 실행할 수 있게 변경해 주어야했다. json // package.json { ..., "type" : "module", "scripts": { ..., "build": "tsc", // 기존 "start": "nodemon app" // 변경 "start": "nodemon ./dist/app.js" }, } 이렇게만 해주면 해결될 줄 알았지만 또 하나의 에러가 발생했다.🥲 ## 문제 상황 > Error Message > ReferenceError: exports is not defined in ES module scope This file is > being treated as an ES module because it has a '.js' file extension > and 'D:\Project\blog\server\package.json' contains "type": "module". > To treat it as a CommonJS script, rename it to use the '.cjs' file > extension. 이 에러는 Node.js가 파일을 ES 모듈로 처리하고 있으며, 이 파일 내에서 CommonJS 모듈 구문(exports 또는 module.exports)을 사용하려고 시도했을 때 발생하는 에러로, package.json"type": "module" 설정이 포함되어 있기 때문에 발생했다. ## 해결 package.json파일에서 "type" : "module"이 부분을 삭제하여 해결 했다. json // package.json { ..., "type" : "module", // ← 삭제 "scripts": { ..., // 기존 "start": "nodemon app" // 변경 "start": "nodemon ./dist/app.js" }, } tsconfig.json 파일에서도 module 부분을 수정해 줄 수 있지만 package.json파일에서 해결해 주었다. json // tsconfig.json { "compilerOptions": { "target": "es2016", "module": "esnext", "moduleResolution": "node", "esModuleInterop": true, "outDir": "./dist", "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true, "paths": { "@/*": ["./src/*"] } }, "include": ["**/*.ts", "**/*.tsx"], "exclude": ["node_modules"] } ## 마무리 js파일로만 node.js로 서버를 만들어봤는데 타입스크립트로 변환하는 것이 익숙하지 않아서 앞으로 트러블슈팅 포스트가 많이 올라올 것 같다 😂

Tailwind CSS에서 SCSS로 마이그레이션 하는 이유
Tailwind CSS에서 SCSS로 마이그레이션 하는 이유CSS-in-JS의 한계와 불편한 점과 SCSS의 사용방법에 대해 알아본다.
생성일: 2024.02.21수정일: 2024.02.21
목차