리엑트에서 이미지 경로 설정하기
1. public
: process.env.PUBLIC_URL 사용
const App = () => {
return (
<img src={process.env.PUBLIC_URL + '/myImagePath.jpg'} />
);
};
export default App;
2. import
: 파일 최상단에 사용하려는 모든 이미지를 import해서 사용하는 동기적인 방법
import myImage from './assets/myImage.jpg';
const App = () => {
return (
<img src={myImage} />
);
};
export default App;
3. require
: default 를 붙이는 이유는 require를 사용하면 객체 형태로 값이 리턴되기 때문에, default 를 붙이면 문자열 형태 그대로 인식되게 만들어줌
const App = () => {
return (
<img src={require('./assets/myImage.jpg').default} />
);
};
export default App;
그러나 이미지 경로 설정할 때 가끔 이러한 에러가 발생한다.
Cannot find module ..... or its corresponding type declarations
이럴 경우, react-app-env.d.ts 파일을 삭제해서 생긴 문제였고 다시 복구해주면 된다.
/// <reference types="react-scripts" />
이 파일은 무슨 역할을 하고 있었길래 삭제했을 때 이런 에러를 발생시키는 걸까?
node-modules/react-scripts/lib/react-app.d.ts경로에 들어가면 이러한 내용들이 있다.
이미지와 스타일 관련된 파일 확장자들에 대한 타입이 선언되어 있다!
declare namespace NodeJS {
interface ProcessEnv {
readonly NODE_ENV: 'development' | 'production' | 'test';
readonly PUBLIC_URL: string;
}
}
declare module '*.avif' {
const src: string;
export default src;
}
declare module '*.bmp' {
const src: string;
export default src;
}
declare module '*.gif' {
const src: string;
export default src;
}
declare module '*.jpg' {
const src: string;
export default src;
}
declare module '*.jpeg' {
const src: string;
export default src;
}
declare module '*.png' {
const src: string;
export default src;
}
declare module '*.webp' {
const src: string;
export default src;
}
declare module '*.svg' {
import * as React from 'react';
export const ReactComponent: React.FunctionComponent<React.SVGProps<
SVGSVGElement
> & { title?: string }>;
const src: string;
export default src;
}
declare module '*.module.css' {
const classes: { readonly [key: string]: string };
export default classes;
}
declare module '*.module.scss' {
const classes: { readonly [key: string]: string };
export default classes;
}
declare module '*.module.sass' {
const classes: { readonly [key: string]: string };
export default classes;
}
출처
[React] 리액트에서 이미지 경로 설정하기 (public, src 디렉토리 차이)
public 디렉토리 VS. src 디렉토리
bokjiho.medium.com
https://code-anthropoid.tistory.com/275
d.ts // its corresponding type declarations.
타입스크립트가 적용된 CRA 프로젝트를 생성해서 사용하지 않는 파일들을 없애던 도중 갑자기 App.tsx에서 다음과 같은 에러가 발생했다 결론부터 말하면 react-app-env.d.ts 파일을 삭제해서 생긴 문
code-anthropoid.tistory.com
[React] Create-react-app 프로젝트에서 이미지 경로를 설정하는 4가지 방법
create-react-app 프로젝트에서 public, src에있는 이미지를 사용할 때, jsx, css 에서 각각 어떻게 불러올 수 있는지 정리해본다.
velog.io