webpack 설정 시에 발생하는 대표적인 에러인 regeneratorRuntime 에 대해 다루어보겠습니다.
ES8 문법인 async/await를 사용해 비동기 함수를 작성하면 브라우저에서 다음과 같은 에러가 발생합니다.
async/await 함수 호출 예시
import axios from 'axios'
export async function test() {
const resposne = await axios.get(
'https://api.hnpwa.com/v0/news/1.json'
);
console.log(resposne.data);
return resposne.data;
}
async/await 지시어를 써서 정상적으로 비동기 api를 호출하기 위해서 babel을 설정해야합니다.
우선 아래의 바벨 라이브러리를 설치합니다.
npm install --save-dev @babel/plugin-transform-runtime
npm install --save @babel/runtime
webpack 설정이 완료되어있고 다음과 같은 @babel @babel/core @babel/preset-env 등의 바벨 라이브러리가 설치되어있다면,
프로젝트 내에 babel 설정파일(.babelrc)이 있을 것입니다. (없다면 직접 만드시면 됩니다.)
// .babelrc
{
"presets": [
[
"@babel/preset-env"
,{}
]
],
"plugins": ["@babel/plugin-transform-runtime"]
}
babel 설정파일(.babelrc)의 plugins 에 @babel/plugin-transform-runtime 를 추가하면 됩니다.
webpack 에 설정되어있는 바벨이 @babel/plugin-transform-runtime 플러그인을 통해서 자동으로 ES8 문법을 사용가능하게 해줍니다.
webpack 설정 파일에 있는 babel 설정입니다.
참고하시면 좋을 것 같습니다.
// webpack.config.js
const path = require("path");
const webpack = require("webpack");
...
const config = {
...
module: {
rules: [
{
test: /\.(js|jsx)$/i,
loader: "babel-loader",
},
{
test: /\.css$/i,
use: [stylesHandler, "css-loader"],
},
{
test: /\.(eot|svg|ttf|woff|woff2|png|jpg|gif)$/i,
type: "asset",
},
// Add your rules for custom modules here
// Learn more about loaders from https://webpack.js.org/loaders/
],
},
...
}
[React] regeneratorRuntime is not defined 에러 해결
React에서 ES8 문법인 async/await를 사용해 비동기 함수를 작성하면 브라우저에서 다음과 같은 에러가 발생한다.애플리케이션이 컴파일될 때, regeratorRuntime이 async/await 문법을 번역하도록 했는데 해
velog.io
바벨 설정 참고 사이트
https://www.daleseo.com/js-babel-node/
Node.js로 ES6 코드 실행하기 (Babel)
Engineering Blog by Dale Seo
www.daleseo.com
https://defineall.tistory.com/646
[Node.js] Babel (바벨) 이란? / 사용법
babel 이란? 최신 ES6, ES7 버전의 javascript코드를, ES5버전의 코드로 바꾸어주는 Node.js 패키지 babel의 필요성 / 쓰는 곳 자주변하는 javascript 최신 코드를 이해하지 못하는 웹 브라우저에서도 페이지에
defineall.tistory.com
'webpack' 카테고리의 다른 글
webpack - 환경변수 process.env (0) | 2022.03.25 |
---|---|
webpack - devServer CORS 에러 설정 (0) | 2022.03.25 |
댓글