webpack์ผ๋ก ๋น๋ ํ ๋ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
ERROR in ./~/redis/lib/parser/hiredis.js
Module not found: Error: Cannot resolve module 'hiredis' in C:\NodeServer\AppInTheWild\node_modules\redis\lib\parser
@ ./~/redis/lib/parser/hiredis.js 3:14-32
๋๋ ํ์ธ ๋์ค๋ฅผ ๋ํ ๋์๋ก ์ค์นํ๊ณ ์ถ์ง ์๋ค. ์ด๋ค ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น?
webpack์ด hiredis๊ฐ node_redis์ ์ ํ์ ์ข ์์ฑ์์ ๊ฐ์งํ์ง ๋ชปํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์นํฉ ๊ตฌ์ฑ์ ์ด๋ป์ต๋๊น? ์์ ์ ์ฝ๋ ๋ง ํจํค์งํ๊ณ node_modules
์๋ ๊ทธ๋๋ก ๋๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ํฅ๋ฏธ๋ก์ด ๊ธฐ์ฌ๋ฅผ ์ฐพ์์ต๋๋ค. ์ด๋ ๊ฒํ๋ฉด ํ์ฌ ๋ชจ๋์ ๊ฐ์ ธ ์์ ์ต์ข
๋น๋ ํ์ผ๋ก ํจํค์งํ์ง ์์ต๋๋ค. ๋ฌผ๋ก ๊ทธ๋ ๊ฒํ๋ ค๊ณ ํ์ง ์๋ ํ.
๋ ์ด์ ์๋ต์ด์๊ณ node-redis์ ๋ฌธ์ ๊ฐ ์๋๋ฏ๋ก ์ด๊ฒ์ ๋ซ์ต๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. webpack์ node_redis๋ก๋ง ์คํจํ๋ ๊ฒ ๊ฐ์ต๋๋ค (webpack-node-externals๋ฅผ ์ฌ์ฉํ์ฌ ๋๋จธ์ง ๋ฐฑ์๋๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ํจํค์งํ์ฌ node_module deps๋ฅผ ๊ฑด๋ ๋ฐ๊ณ ์์ต๋๋ค).
~~~~
./~/redis-commands/index.js์ ์ค๋ฅ
๋ชจ๋์ ์ฐพ์ ์ ์์ : ์ค๋ฅ : demo / node_modules / redis-commands์์ 'file'๋๋ 'directory'./commands๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
@ ./~/redis-commands/index.js 3 : 15-36
./~/redis-parser/lib/hiredis.js์ ์ค๋ฅ
๋ชจ๋์ ์ฐพ์ ์ ์์ : ์ค๋ฅ : demo / node_modules / redis-parser / lib์์ 'hiredis'๋ชจ๋์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
@ ./~/redis-parser/lib/hiredis.js 3 : 14-32
~~~~
@blainsmith ๋ด ๊ตฌ์ฑ :
~~~~
const nodeExternals = require ( 'webpack-node-externals');
module.exports = {
๋์ : '๋
ธ๋',
์ธ๋ถ : [nodeExternals ()],
ํด๊ฒฐ : {
ํ์ฅ์ : [ '', '.js'],
modulesDirectories : [
'๋
ธ๋ _ ๋ชจ๋'
]
},
๋ชจ๋ : {
resolveLoader : {
๋ฃจํธ : path.join (__ dirname, 'node_modules')
},
๋ก๋ : [
{
ํ
์คํธ : /.json$/,
๋ก๋ : 'json-loader'
},
{
ํ
์คํธ : /.js$/,
์ ์ธ : [/ node_modules /],
๋ก๋ : 'babel-loader'
},
]
},
});
~~~~
์ฌ๊ธฐ์๋ ๊ฐ์ ์ผ์ ๊ฒฝํํฉ๋๋ค. ๋ค๋ฅธ ์ข ์์ฑ์ด ํด๊ฒฐ๋ฉ๋๋ค.
dev ์คํฌ๋ฆฝํธ๊ฐ ์๋ํ๊ณ build : dev ์คํฌ๋ฆฝํธ๊ฐ ์คํจํฉ๋๋ค. ๋์ผํ webpack.config.js.
์คํฌ๋ฆฝํธ
"dev": "DEBUG=* && webpack-dev-server --bail --config webpack.config.js --host 0.0.0.0",
"build:dev": "webpack --config webpack.config.js ",
Deps
"botkit-storage-redis": "1.1.0",
๋น๋ ์ค๋ฅ
ERROR in ./~/redis-parser/lib/hiredis.js
Module not found: Error: Can't resolve 'hiredis' in '/path/to/node_modules/redis-parser/lib'
@ ./~/redis-parser/lib/hiredis.js 3:14-32
@ ./~/redis-parser/lib/parser.js
@ ./~/redis-parser/index.js
@ ./~/redis/index.js
@ ./~/botkit-storage-redis/src/index.js
@ ./~/botkit-storage-redis/index.js
@ ./src/index.js
๊ฐ์ ์ค๋ฅ๊ฐ ์์๊ณ ์ฌ๊ธฐ ์์ ์๋ฃจ์ ์ ๋น๋ ค์ ์๋ํ์ต๋๋ค.
๋ฐ๋ผ์ webpack.config.js
์ ๊ด๋ จ ์ค ๋ํซ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
resolve: {
alias: {
'hiredis': path.join(__dirname, 'aliases/hiredis.js')
}
}
๋ํ ๋ค์ ๋ด์ฉ์ด ํฌํจ ๋ aliases/hiredis.js
ํ์ผ์ ๋ง๋ค์์ต๋๋ค.
export default null
yarn add hiredis
npm i --save hiredis
ํดํน์ด์๋ ๊ฐ๋จํ ์๋ฃจ์
hiredis๋ ์ ํ์ ์ข ์์ฑ์ด๋ฉฐ ๋ถํ์ํ ์ข ์์ฑ์ ์ค์นํ๊ณ ์ถ์ง๋ ์์ง๋ง ๋ณ์นญ์ ํดํนํ๊ณ ์ถ์ง๋ ์์ต๋๋ค. ๊ฐ์ฅ ๊ฐ๋จํ ํด๊ฒฐ์ฑ ์ webpack.IgnorePlugin ()์ ํ์ฉํ๋ ๊ฒ์ ๋๋ค.
webpack.config.js์ ์ถ๊ฐ
plugins: [
new webpack.IgnorePlugin(/^hiredis$/)
],
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ฐ์ ์ค๋ฅ๊ฐ ์์๊ณ ์ฌ๊ธฐ ์์ ์๋ฃจ์ ์ ๋น๋ ค์ ์๋ํ์ต๋๋ค.
๋ฐ๋ผ์
webpack.config.js
์ ๊ด๋ จ ์ค ๋ํซ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.๋ํ ๋ค์ ๋ด์ฉ์ด ํฌํจ ๋
aliases/hiredis.js
ํ์ผ์ ๋ง๋ค์์ต๋๋ค.