Create-React-App
npx create-react-app frontend
npm install web3 web3-utils
์ต์ react ํ
ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ web3.js๋ฅผ ๋น๋ํ ๋ ์ ๋ง์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
๊ณต์ ๊นํ์์๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ react-app-wired๋ฅผ ํ์ฉํ์ฌ ๋ถ์กฑํ ๋ชจ๋์ ์ง์ ์ค์นํ๋๋ก ์๋ดํ๊ณ ์๋ค.
1. react-app-rewired ๋ฐ ๋ถ์กฑํ ๋ชจ๋ ์ค์น
npm install --save-dev react-app-rewired crypto-browserify stream-browserify assert stream-http https-browserify os-browserify url buffer process
2. ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ config-overrides.js ํ์ผ ์์ฑ
const webpack = require('webpack');
module.exports = function override(config) {
const fallback = config.resolve.fallback || {};
Object.assign(fallback, {
"crypto": require.resolve("crypto-browserify"),
"stream": require.resolve("stream-browserify"),
"assert": require.resolve("assert"),
"http": require.resolve("stream-http"),
"https": require.resolve("https-browserify"),
"os": require.resolve("os-browserify"),
"url": require.resolve("url")
})
config.resolve.fallback = fallback;
config.plugins = (config.plugins || []).concat([
new webpack.ProvidePlugin({
process: 'process/browser',
Buffer: ['buffer', 'Buffer']
})
])
return config;
}
3. package.json ์คํ ์คํฌ๋ฆฝํธ ์์
"scripts": {
"start": "react-app-rewired start", // "react-scripts start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-scripts eject"
},
(์ถ๊ฐ)
์๋ด๋๋ก๋ง ์ค์นํ๋ฉด 2๊ฐ์ง ๋ชจ๋(constants, path)์ด ์ถ๊ฐ๋ก ๋ถ์กฑํ๋ค๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํจ์ ํ์ธํ ์ ์๋ค. ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ค์นํ๊ณ ํ๊ฒฝ ํ์ผ์ ์ถ๊ฐ๋ฅผ ํด์ฃผ๋ฉด ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
4. ๋ถ์กฑํ ๋ชจ๋ ์ถ๊ฐ ์ค์น
npm install --save-dev constants-browserify path-browserify
5. config-overrides.js ํ์ผ ์ถ๊ฐ ์ค์
const webpack = require("webpack");
module.exports = function override(config) {
const fallback = config.resolve.fallback || {};
Object.assign(fallback, {
crypto: require.resolve("crypto-browserify"),
constants: require.resolve("constants-browserify"), // ์ถ๊ฐ
stream: require.resolve("stream-browserify"),
assert: require.resolve("assert"),
http: require.resolve("stream-http"),
https: require.resolve("https-browserify"),
os: require.resolve("os-browserify"),
path: require.resolve("path-browserify"), // ์ถ๊ฐ
url: require.resolve("url"),
});
config.resolve.fallback = fallback;
config.ignoreWarnings = [/Failed to parse source map/];
config.plugins = (config.plugins || []).concat([
new webpack.ProvidePlugin({
process: "process/browser",
Buffer: ["buffer", "Buffer"],
}),
]);
return config;
};
๋ธ๋ก์ฒด์ธ์ ๊ด๋ จํ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ํ๋ก ํธ์์ Web3.js๋ฅผ ์ ์ฉํ๋๋ฐ ์์ด ์ถฉ๋์ด ํฌ๊ฒ ๋ฐ์ํ์ฌ ๊ธฐ๋ก์ ๋จ๊ธด๋ค.
๊ฐ์ฅ ๋จผ์ ์ ํ ๊ธ์ react-scripts ๋ฒ์ ์ ๋ฎ์ถ๋ผ๋ ๋ฐฉ๋ฒ์ด์๋๋ฐ, ๊ธฐ์กด์ ์์
ํ ํ๋ก์ ํธ ์ฝ๋๋ค์ด ์ต์ ๋ฒ์ ์ผ๋ก ์์ฑ๋์ด์์ด ๊ณต์๋ฌธ์๋ฅผ ์ฐพ๊ฒ ๋์๋ค. ์ด์๋ก ๋ค๋ค์ง๊ณ ์๋ ๋ถ๋ถ์ด์ด์ ์ฝ๊ฐ์ ๋
ธ๋ ฅ์ผ๋ก ๊ธฐ์กด ํ๋ก์ ํธ๋ฅผ ๋ณด์ ํ ์ ์๋ ๊ณ๊ธฐ๊ฐ ๋์๋ค.