씨네
공부하는 개발자 강씨네
씨네
  • 분류 전체보기 (460)
    • Web (21)
      • HTML (11)
      • CSS (10)
    • JS 관련 (49)
      • JavaScript (27)
      • JQuery (22)
    • TS 관련 (15)
      • TypeScript (15)
    • NodeJS (7)
      • NodeJS (7)
    • 따라하며 배우는 시리즈 (23)
      • NodeJS & ReactJS Basic (23)
      • NodeJS & ReactJS Movie (0)
      • NodeJS & ReactJS Youtube (0)
      • NodeJS & ReactJS ChatBot (0)
    • SPA (14)
      • React (14)
      • Vue (0)
      • Anguler (0)
    • Java 관련 (118)
      • Java (52)
      • JDBC (6)
      • JSP & Servlet (18)
      • Spring Legecy (38)
      • SpringBoot (4)
    • Python (26)
      • Python (20)
      • PyMongo (1)
      • Django (5)
    • Git (24)
      • Github (24)
    • RDB (22)
      • Oracle (21)
      • MySQL (1)
    • NoSQL (5)
      • MongoDB (5)
    • OS (4)
      • Linux (4)
    • 빅데이터 (2)
      • hadoop (2)
    • IDE (20)
      • eclipse (11)
      • VSCODE (4)
      • VisualStudio (1)
      • IntelliJ (1)
      • PyCharm (1)
      • DBeaver (2)
    • Install (3)
      • Tomcat (1)
      • Docker (1)
      • Anaconda (1)
    • 오류&에러 (28)
      • TS (2)
      • NodeJS (7)
      • SQL (8)
      • Java (1)
      • Spring (4)
      • Git (6)
      • 기타 (0)
    • 알고리즘 (67)
      • 수열 (1)
      • 백준(backjoon) (39)
      • Programmers (27)
    • 자격증 (5)
      • SQLD (5)
    • 기타 (2)
    • IT유튜브로 지식쌓기 (2)

공지사항

인기 글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
씨네

공부하는 개발자 강씨네

[NodeJS 오류] ERR_PACKAGE_PATH_NOT_EXPORTED
오류&에러/NodeJS

[NodeJS 오류] ERR_PACKAGE_PATH_NOT_EXPORTED

2024. 1. 15. 12:39
728x90

업무를 보고있는데 같은 로직을 태워야하는데 실행 경로가 다른 경우의 케이스가 있어서 로직을 private파일로 분리하고 두개의 경로에서 분리한 private 파일을 사용하도록 처리하는 도중 e2e 테스트를 하는데 오류가 발생하였다.

 

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './base64' is not defined by "exports" in C:\Users\USER\Desktop\workspaces\보안상\이름바꿉니다\node_modules\js-base64\package.json
    at new NodeError (internal/errors.js:322:7)
    at throwExportsNotFound (internal/modules/esm/resolve.js:332:9)
    at packageExportsResolve (internal/modules/esm/resolve.js:565:3)
    at resolveExports (internal/modules/cjs/loader.js:450:36)
    at Function.Module._findPath (internal/modules/cjs/loader.js:490:31)
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:888:27)
    at Function.Module._resolveFilename.sharedData.moduleResolveFilenameHook.installedValue [as _resolveFilename] (C:\Users\USER\Desktop\workspaces\보안보안\node_modules\@cspotcode\source-map-support\source-map-support.js:811:30)      
    at Function.Module._load (internal/modules/cjs/loader.js:746:27)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:101:18) {
  code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
}

제일먼저 노드 버전을 확인해보았다.

 

우리 회사에서는 v14.19.1 을 사용하는데 버전에는 문제가 없었다.

 

그러면 파일을 분리하는 도중 노드 모듈에 문제가 있는걸까?..

 

2번째 조치로 노드 모듈을 다시 받아보았다.

npm chach clean --force도 해보고 별짓을 다해보았다.

그래도 같은 증상,,

 

아니 버전문제도 아니고 경로문제 분명 아닌데 왜 안된단말인가?..

 

Chat-GPT한테 물어보았다.

이 오류는 js-base64 모듈의 package.json 파일에서 exports 객체에 base64 속성이 정의되어 있지 않아서 발생하는 것입니다. 이 속성이 정의되어 있지 않으면 Node.js는 해당 모듈을 사용할 수 없습니다.

해결 방법으로는 js-base64 모듈의 package.json 파일에서 exports 객체에 base64 속성을 추가해야 합니다. 예를 들어, 다음과 같이 추가할 수 있습니다.

"exports": {
  ".": "./dist/js-base64.js",
  "./base64": "./dist/base64.js"
}

이렇게 하면 js-base64 모듈의 base64 속성을 사용할 수 있게 됩니다.

라는데 npm i 로 받은 모듈이라 exports가 잘 되어있다.

 

 

이 문제가 아닌것같은데 다시 알려달라고 물어보았다.

만약 exports 객체에 base64 속성이 정의되어 있고, 여전히 이 오류가 발생한다면, 다음과 같은 몇 가지 가능한 원인이 있을 수 있습니다.

모듈 경로가 잘못되었을 경우: 모듈 경로가 올바른지 확인해보세요. 예를 들어, js-base64 모듈을 사용하는 코드에서 require('js-base64/base64')와 같이 경로를 잘못 지정한 경우 이 오류가 발생할 수 있습니다. 경로를 올바르게 지정하면 이 오류를 해결할 수 있습니다.

모듈 버전이 맞지 않을 경우: 모듈 버전이 맞지 않으면 이 오류가 발생할 수 있습니다. 모듈 버전을 확인해보세요. js-base64 모듈의 package.json 파일에서 version 속성을 확인해보세요.

Node.js 버전이 맞지 않을 경우: Node.js 버전이 맞지 않으면 이 오류가 발생할 수 있습니다. Node.js 버전을 확인해보세요.

파일 시스템 문제일 경우: 파일 시스템 문제로 인해 이 오류가 발생할 수 있습니다. 파일 시스템을 확인해보세요.

위의 원인들을 하나씩 확인해보시고, 문제를 해결해보세요.

라는데... 나는 경로나 import를 건든게 없다...

 

그러다가 발견한것이 있다.

import { Base64 } from 'js-base64/base64';

뭔가 이상하다...

 

소스를 건든적은 없는데 js-base64/base64 인게 뭔가 의심스러웠다.

 

수정한 소스를 stash 해놓고 원복한다음 기존 소스를 보았다.

 

import { Base64 } from 'js-base64';

나는 빡대가리 였다.....

 

소스를 복붙하면서 경로를 VSCODE에서 자동으로 바꿔준것같은데...

경로 수정하니까 아주 잘된다...

 

노드 버전문제 뿐만아니라 경로도 꼭 다시한번 확인해보시길,,,

728x90
저작자표시 (새창열림)

'오류&에러 > NodeJS' 카테고리의 다른 글

NodeJS로 express와 mongoDB 연결시 오류 해결 Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you're trying to access the database from an IP that isn't whitelisted. Make sure your current IP address is o..  (0) 2023.01.31
[NodeJS] npm ERR! code ENOENT npm ERR! syscall rename  (10) 2022.09.24
ReferenceError: bodyParser is not defined  (0) 2022.08.30
MongoInvalidArgumentError: No AuthProvider for DEFAULT defined.  (0) 2022.08.28
MongoParseError: options usecreateindex, usefindanmodify are not supported  (0) 2022.08.27
    '오류&에러/NodeJS' 카테고리의 다른 글
    • NodeJS로 express와 mongoDB 연결시 오류 해결 Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you're trying to access the database from an IP that isn't whitelisted. Make sure your current IP address is o..
    • [NodeJS] npm ERR! code ENOENT npm ERR! syscall rename
    • ReferenceError: bodyParser is not defined
    • MongoInvalidArgumentError: No AuthProvider for DEFAULT defined.
    씨네
    씨네
    개발자 씨네가 공부하는 내용을 기록 겸 공유하는 블로그입니다!

    티스토리툴바