개발자

리액트에 외부 js 파일을 호출하는 방법

2023년 02월 15일조회 272

외부에서 이미 만들어진 js 파일을 리액트에 불러와서 사용하는 방법을 알고 싶습니다. js 파일을 가져와서 src에 붙여넣고 저장하면 컴파일 에러가 발생합니다. 가져오는 외부 js는 화면에 렌더링하는 파일이 아니라 클래스형? js 파일입니다. 외부 js를 통해 리액트 내부에서 그 클래스를 참조해서 새로운 객체를 만드려면 어떻게 해야 할까요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

문석기님의 프로필 사진

public 폴더 하위에 파일을 위치시키고 index.html 에 스크립트 태그로 두시면 해당 프로젝트 내에서 접근 가능하실겁니다. 추가로 리액트 외 js로 동작하는 거기 때문에 리액트 내부에서 사용하려면 해당 js 를 사용하기위한 스크립트를 만들고 그걸 리액트가 랜더링 되는 시점에 추가해줘야합니다. <- 결론적으로 브라우저에 랜더링 되었을때 외부js, 리액트 랜더링 결과 html에 외부js를 사용하는 스크립트가 존재해야한다는 얘기입니다. 왜 이렇게 해야하는지 모르겠지만 권장하지 않습니다.

Gorilla.Kim님의 프로필 사진

댓글을 참고 바랍니다 : )

Gorilla.Kim님의 프로필 사진

Gorilla.Kim

매드업 프론트엔드 개발자2023년 02월 15일

제가 질문자님의 글을 잘못 이해하고 단것 같습니대 😅

Gorilla.Kim님의 프로필 사진

Gorilla.Kim

매드업 프론트엔드 개발자2023년 02월 15일

프로직트 외부에 있는 js 파일을 리액트 프로젝트에서 사용하고 싶다고 이해했습니다. 결론부터 말씀드리면, 가능합니다. 단, 다음 두가지가 정말 중요할것 같아요. 1. 언제 해당 파일을 불러올것인가 2. 해당 파일을 어디에 위치할것인가 해당 파일을 이미 화면에 랜더가 되어 프로젝트가 동작하고 있는 상태에서 새로운 파일을 올려 사용하고 싶다면.. 🤔 사용불가능할것 같아요. 애초에 없는 파일을 코드에서 접근해서 호출하고 있는 상황일텐데, 빌드할때부터 에러가 날것같거든요. 만약 public 폴더에 넣어 빌드시 에러가 안나더라도 해당파일을 추가하기전에 해당파일을 사용하는 컴포넌트가 랜더가 되면 이때 컴파일 에러가 날거같아요. 랜더 전에 집어넣는다면 가능은 한데.. 앞서 답변주신 다른분들 의견처럼 비 정상적으로 사용하는 방식이라 이런 방법이 필요한 상황이 있을까? 싶기도 하고 권해드리고 싶진 않습니다. 두번째는 해당 파일을 어디에 위치할것인가 인데요, 일반적으로 리액트는 최신JS문법을 사용하기 때문에 바벨이나 웹팩설정이 동반이 되어집니다. 이때 웹팩은 프로젝트 빌드할때 src 아래에 있는 것들을 번들파일로 묶는 작업을 해요. 즉, 빌드 전에 포함된 파일들만 번들파일에 포함이 될것입니다. 이와 같은 이유로 빌드 이후에 파일을 추가하면 사용하고 싶어도 쓸수가 없을거에요. 물론, 로컬에서 개발할땐 핫리로드 옵션이 해결해 주겠지만요. 핫리로드가 되었음에도 에러가 난다면 추가한 파일속 코드에 문제가 있거나, 타입스크립트 처럼 프로젝트 환경셋팅이 안맞아 에러가 날수도 있어요. 이부분은 에러 메시지를 확인해야 정확한 답변을 드릴 수 있을것 같습니다. 하지만 public에 해당 파일이 위치해 있다면, 프로젝트 어느시점에도 접근 가능할것 같습니다. 하지만 해당 파일이 존재해야 사용이 가능할테니 이에 대한 대응이 필요할것 같습니다. 제가 질문을 잘 이해한것인지 모르겠네요 😅 어떤 상황인지는 질문 내용만 보고는 모르겠지만, 일반적인 개발방식이 아닌것 같습니다. 더 근본적으로 해결하고자 하는 내용을 업데이트 주시면 여기계신 훌륭한 개발자 분들이 더 좋은 방법을 제시해 주실 수 있을것 같습니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!