Nest.js로 만들어진 내부 프로젝트(유지보수 안 한지 좀 됨)를 실행하려고 보니 다음과 같은 에러가 출력되었다.
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: C:(내부 경로)\node_modules\true-myth\dist\index.js
require() of ES modules is not supported.
require() of C:(경로)\node_modules\true-myth\dist\index.js from C:(내가 작성한 코드).ts is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
Instead rename index.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from C:(내부 경로)\node_modules\true-myth\package.json.
보아하니 node-modules 내부에 있는 true-myth라는 모듈의 package.json에 "type": "module" 이라는 문구가 들어갔고 그게 에러를 유발했다는 것 같았다.
그냥 지우라는 문구가 있길래 그렇구나...지우면 어떻게 되지? 하고 냅다 지웠다(ㅋㅋ)
그리고 이 에러가 떴다.
C:\(경로)\node_modules\true-myth\dist\index.js:1
export { Maybe } from './maybe.js';
^^^^^^
SyntaxError: Unexpected token 'export'
at wrapSafe (internal/modules/cjs/loader.js:1001:16)
at Module._compile (internal/modules/cjs/loader.js:1049:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:12)
at Module.require (internal/modules/cjs/loader.js:974:19)
at require (internal/modules/cjs/helpers.js:93:18)
at Object.<anonymous> (C:\내 파일)
at Module._compile (internal/modules/cjs/loader.js:1085:14)
at Module.m._compile (C:\(경로)\social-monitor-backend-v2\node_modules\ts-node\src\index.ts:1371:23)
true-myth는 일종의 optional한 값이나 어떤 에러를 처리하기 위해 사용하던 라이브러리였는데, 그 내부에 있던 export라는 키워드가 ESM과 호환이 되지 않는 것처럼 보였다.
왜 생긴거냐면 내가 install을 잘못해서 package.json에 있던 모듈들이 대거 업데이트되면서 mongoose와 true-myth가 충돌해서 그렇다.
ESM이랑 CommonJS가 따로 있는데 이건 나중에 찾아봐야지
'DEVELOPMENT > NODEJS' 카테고리의 다른 글
Node.js BASE64로 AWS S3에 이미지 업로드하기 (0) | 2022.04.17 |
---|---|
cookie 데코레이터에서 JWT payload 추출하기 (0) | 2022.04.15 |
cookie 데코레이터에서 JWT payload 추출하기 (0) | 2022.04.08 |
pm2 package.json 명령어 실행하기 (0) | 2022.03.30 |
Node.js 프레임워크 성능 비교(express, fastify, nest.js) (0) | 2022.01.02 |