Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- nestjs 예외
- 예외 커스텀
- 동시성 제어
- nodejs
- JavaScript
- 스프링jpa
- 스프링 이미지
- 3WayHandshake
- docker
- 자바
- 스프링Entity
- nginx
- 토스팀
- connection reset by peer
- 스프링오류
- 유난한 도전
- Mysql이미지
- 스프링기초
- 동시성문제
- 스프링
- 동시성 문제
- nestjs
- OS
- 토스책
- 예외필터
- 대규모 트래픽
- 트러블슈팅
- 분산시스템
- Jenkins
- 예외 핸들링
Archives
- Today
- Total
삽질블로그
Typescript Cannot find module에러 본문
타입스크립트를 이용해 서버를 구축하면 실행할 때 JS로 변환해야 서버를 실행할 수 있습니다.
이를 위해 tsconfig.json파일에서 많은 설정을 하는데요.
"nodemon --exec ts-node src/app.ts"
위 명령어로 서버를 실행하면 안나던 오류가
"npx tsc && node dist/app.js"
위 명령어로 서버를 실행하면
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
at Function.Module._resolveFilename (/Users/jojunhui/Desktop/project/algorithm-project/server2.0/node_modules/module-alias/index.js:49:29)
at Function.Module._resolveFilename (/Users/jojunhui/Desktop/project/algorithm-project/server2.0/node_modules/tsconfig-paths/lib/register.js:103:40)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (/Users/jojunhui/Desktop/project/algorithm-project/server2.0/dist/controller/userController.js:15:39)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
위와 같이 module을 찾을 수 없다는 오류가 계속해서 발생하였습니다.
이렇게 module참조를 하지 못하는 이유는 tsconfig.json파일에서 찾을 수 있는데요.
{
"compilerOptions": {
"strict": true, // use strict 사용
"target": "es2016", // 컴파일 문법
"preserveValueImports": false,
"module": "commonjs", // 모듈 포맷
"esModuleInterop": true,
"outDir": "./dist", //타입스크립트가 자바스크립트로 빌드된 파일들 모아두는 폴더명
"allowSyntheticDefaultImports": true,
"experimentalDecorators": true, // 타입orm관련
"emitDecoratorMetadata": true, // 타입orm관련
"forceConsistentCasingInFileNames": true,
"strictPropertyInitialization": false,
"pretty": true,
"sourceMap": true,
"allowJs": true,
"noEmit": false,
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"],
}
},
"typeRoots": [
"./node_modules/@types",
"./src/types"
],
"include": [
"./src/**/*"
, "app.ts", "src/app.js" ],
"exclude": [
"node_modules",
"tests"
]
}
제 jsconfig.json파일의 paths를 보면 ./src/* 경로를 볼 수 있습니다.
저는 이렇게 설정해놓고 개발환경에서 다른 파일을 참조할 때 import test from "@/testroute/asd/" 이런식으로 참조했는데요.
이는 ts파일에선 참조할 수 있지만 js파일로 변환시킨 후 실행하면 참조하지 못하기 때문에 오류가 발생했었습니다.
이 오류를 해결하려면 js파일을 모아둔 경로 또한 paths에 지정해줘야합니다.
저 같은 경우는 outDir : "./dist"이기 때문에 dist폴더에 js파일이 있습니다.
따라서 paths를 아래와 같이 변경하면 오류를 해결할 수 있었습니다.
"paths": {
"@/*": ["./src/*", "./dist/*"],
}
'고찰 & 트러블슈팅' 카테고리의 다른 글
Connection reset by peer에 대한 고찰 (1) | 2024.08.29 |
---|---|
대규모 트래픽에서의 connection reset by peer 트러블 슈팅 (0) | 2024.08.29 |
Comments