ERROR in ./node_modules/redis-parser/lib/hiredis.js
Module not found: Error: Can't resolve 'hiredis' in
error Command failed with exit code 2.
์นํฉ ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
var path = require('path')
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: ['babel-loader']
}
]
},
target: 'node'
}
ํจํค์ง.json
{
"version": "1.0.0",
"main": "src/index.js",
"license": "MIT",
"dependencies": {
"dotenv": "^4.0.0",
"koa": "^2.3.0",
"koa-bodyparser": "^4.2.0",
"koa-router": "^7.2.1",
"node-fetch": "^1.7.1",
"redis": "^2.7.1"
},
"devDependencies": {
"babel-cli": "^6.24.1",
"babel-loader": "^7.1.1",
"babel-plugin-transform-class-properties": "^6.24.1",
"babel-plugin-transform-object-rest-spread": "^6.23.0",
"babel-preset-env": "^1.5.2",
"webpack": "^3.0.0"
},
"scripts": {
"start": "node dist/bundle",
"build": "webpack"
},
"babel": {
"presets": [
[
"env",
{
"targets": {
"node": "current"
}
}
]
],
"plugins": [
"transform-object-rest-spread",
"transform-class-properties"
]
}
}
์นํฉ๊ณผ ๊ด๋ จ์ด ์์ด์ผ ํฉ๋๋ค. webpack ๊ตฌ์ฑ์์ nodeExternals ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
const nodeExternals = require('webpack-node-externals')
module.exports = {
...
externals: [nodeExternals()],
target: 'node'
}
nodeExternals๋ ์๋ฒ ์ธก ๋ฒ๋ค๋ง์์ node_modules ํด๋์ ๋ชจ๋ ๋ชจ๋์ ๊ฑด๋๋๋๋ค.
์ด๊ฒ์ ์นํฉ์ ๋ฌธ์ ์ ๋๋ค.
์ฌ์ค, ๊ทธ๊ฒ์ Webpack์ ๋ฌธ์ ๊ฐ ์๋๋๋ค. redis-parser
๊ฐ hiredis
$ ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ดํ ๋ฌธ์ ์
๋๋ค. ์ด ๋ฌธ์ ๋ ์ ํํ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ redis-parser
3.0์ผ๋ก ์
๊ทธ๋ ์ด๋ํ์ฌ ํด๊ฒฐํ ์ ์์ต๋๋ค.
@guidobouman node_redis ๋ฅผ ๋ถ๊ธฐํ๊ณ ๋จ์ผ ์ข
์์ฑ์ ์
๊ทธ๋ ์ด๋ํ์ง ์๊ณ redis-parser
3.0์ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ ์์ต๋๊น? ๋๋ ์ฑ๊ณตํ์ง ๋ชปํ ์ฑ ๋ช ์ฃผ ๋์ ์ด ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ
์ ์ฐพ๊ณ ์์์ต๋๋ค.
@guidobouman ์ ํจํ JS ์ฝ๋๋ Webpack
์ ์ ํฉํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒ ๊ฐ๊ณ ์ํ๊น์ต๋๋ค. ๊ทธ๊ฑด ์ ์ณ๋๊ณ : ๋๊ตฐ๊ฐ๊ฐ Redis์์ Webpack์ ์ฌ์ฉํ๊ณ ์ถ์ดํ๋ ์ด์ ๊ฐ ๋งค์ฐ ๊ถ๊ธํฉ๋๋ค. ์๋ฒ ์ธก ์ฝ๋๋ฅผ ์ถ์ํ๋ ๊ฒ์ ๊ฝค ๋์ ์๊ฐ์
๋๋ค.
@peterschussheim ํ์ฌ node_redis์์ ์์ ํ ์ ์๋ ์ฉ๋์ด ๋ง์ง ์์๋ฐ ์๋นํ ์ํ๊น์ต๋๋ค. redis-parser๋ง ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ ์๋นํ ๋ฌธ์ ๊ฐ ๋ ๊ฒ์ ๋๋ค.
@BridgeAR ์ฐธ์กฐ https://github.com/NodeRedis/node-redis-parser/pull/36
๋๋ฝ๋ ์ฐธ์กฐ๋ Webpack์ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ์์ต๋๋ค. ๊ณ ์ฉ์๋ฅผ ์์ ํ ์ ๊ฑฐํ๋ฉด ํด๋น ๋ฒ๊ทธ๋ "๋ถ์์ ์์"์ผ๋ก ์์ ๋์์ต๋๋ค.
์๋ฒ ๊ด๋ จ ์ฝ๋์์ ์นํฉ์ ์คํํ๋ ์ด์ ์ ๋ํด: ์๋ฒ๋ฆฌ์ค ํ๊ฒฝ์ ์ด์ ๋ฒ์ ์ Node๋ฅผ ์คํํ ์ ์์ง๋ง ๋๊ตฐ๊ฐ๋ ๊ฐ์ ธ์ค๊ธฐ์ ๊ฐ์ ์ต์ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ ์ ์๊ธฐ๋ฅผ ์ํ ์ ์์ต๋๋ค. (https://github.com/serverless-heaven/serverless-webpack)
@peterschussheim node-redis
redis-parser
๋ฒ์ ์ ์ฌ๋ฆฌ๋ ๊ฒ ์ธ์ ๋ค๋ฅธ ์ต์
์ด ์์ต๋๋ค. hiredis
์ง์ ์ค์นํ์ญ์์ค. hiredis
๋ฅผ ์ฌ์ฉํ์ง ์์ ์๋ ์์ง๋ง redis-parser
๋ ๊ทธ๊ฒ์ด ์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
์ฌ์ค, @BridgeAR : ์ด๊ฒ์ ๋ฒ๊ทธ ์์ ์ด๋ฏ๋ก ํจ์น ๋ฒ์ ๋ฒํ๊ฐ ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ ์ต๋๋ค. ๊ฝค ์ค๋ซ๋์ EOL์ด์์์๋ ๋ถ๊ตฌํ๊ณ Node ๋ฒ์ ์ 4 ๋ฏธ๋ง์ผ๋ก ๋จ์ด๋จ๋ฆฝ๋๋ค.
@guidobouman ๊ทธ ์ ์์ ๋ํด ๋๋จํ ๊ฐ์ฌํฉ๋๋ค. 'ํดํน'์ด๊ธฐ๋ ํ์ง๋ง ์ด ๋ฌธ์ ๋ก ์ธํด ๋ ๋ง์ ์๊ฐ์ ๋ญ๋นํ ์ ์๊ธฐ ๋๋ฌธ์ ์๋ฝํ๊ฒ ์ต๋๋ค.
์๋ง๋ ์ด๊ฒ์ ๋ ์์ ์ด๋ ์ปค๋ฎค๋ํฐ์ ๋ค๋ฅธ ์ฌ๋๋ค์ด 'ํ๋์ ' ๋ฒ์ ์ ์ถ์ํ ์ข์ ๊ธฐํ์ผ ๊ฒ์ ๋๋ค(๋ ธ๋ 4 ์ง์ ๋๋ฌธ์ ์ด์ ๊ฐ์ ๋ณ๊ฒฝ์ ๋ฏธ๋ฃจ๊ณ ์๋ค๋ ์ฌ์ค์ด ๋งค์ฐ ์ํ๊น์ต๋๋ค).
๐
๋๊ตฐ๊ฐ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํด ์ฃผ์๊ฒ ์ต๋๊น? hiredis
๋ฅผ ์ง์ ์ข
์์ฑ์ผ๋ก ์ถ๊ฐํด์ผ ํ๋ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ ๋จ์ํ hiredis
๋ฅผ ์ฌ์ฉํ์ง ๋ง ๊ฒ์ ์ ์ํ๋๋ฐ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
๋ฌธ์์ ๋ฐ๋ฅด๋ฉด ๊ธฐ๋ณธ ํ์๋ hiredis
๊ฐ ์๋๋๋ค. ์ต์ ๋ฒ์ ์ ์ฌ์ฉ ์ค์ด๊ณ hiredis
๊ฐ ์ฌ์ ํ ํ์ํฉ๋๋ค. AWS ๋๋ค ๋ฐํ์์ ๋ฒ๋ค๋งํ ๋ Webpack์ด ๋น์ฐธํ๊ฒ ์คํจํฉ๋๋ค.
๋ชจ๋ ์กฐ์ (๋์: '๋
ธ๋'๋ก ๋ณ๊ฒฝํ๊ณ 'hiredis' ์ถ๊ฐ ์ค์น) ํ์๋ ์ฌ์ ํ
๋ฒ๋ค๋ง ๋ฌธ์ . Webpack๊ณผ ํจ๊ป Redis๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด "Uncaught ReferenceError: require is not defined"๊ฐ ํ์๋ฉ๋๋ค.
์ด ๋ฌธ์ ๋ ์ฌ์ ํ ๊ด๋ จ์ด ์์ต๋๋ค. ํ์ด๋ ๋์ค๊ฐ ์ค๋จ๋๊ณ ๋ ธ๋ 12์ ์ค์นํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ redis-parser๊ฐ v3.0.0์์ ์ ๊ฑฐํ์ง๋ง ์ด ํจํค์ง๋ ์ฌ์ ํ v2.6.0์ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ํ ๋ค์์ ํตํด Parceljs์ ๋ฒ๋ค์ ์๋ํ ๋ ์ด๊ฒ์ ๋ด ๋๋ค.
parcel build src/index.ts --bundle-node-modules --target node --no-source-maps --no-minify
๋ฒ๋ค๋ง(ํธ๋ฆฌ ์์ดํน, ์ปจํ
์ด๋ํ ์ต์ ํ ๋ฑ)ํ ๋ ์ป์ ์ ์๋ ๊ฒ์ด ๋ฌด์์ธ์ง ๊ถ๊ธํฉ๋๋ค. ์ถ์ ์ฌ๋ถ์ ๊ด๊ณ์์ด ํจ๊ณผ๊ฐ ์๋ค๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ์ถ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ง๊ธ npm install
์ ์ ์ฒด ๋น๋๋ฅผ ๊ณ ์ํ ๊ฒ์
๋๋ค.
Hiredis๋ ํฌ๊ธฐํ์ง ์์ต๋๋ค(๋ง์ง๋ง PR์ 10์ผ ์ ). ๊ทธ๋ฌ๋ 3.0์ผ๋ก ์ ๋ฐ์ดํธํ๋ ค๋ฉด PR @sookoll ์ ๊ธฐ์๊ฒ ์๊ฐํฉ๋๋ค.
Hiredis๋ ํฌ๊ธฐํ์ง ์์ต๋๋ค(๋ง์ง๋ง PR์ 10์ผ ์ ). ๊ทธ๋ฌ๋ 3.0์ผ๋ก ์ ๋ฐ์ดํธํ๋ ค๋ฉด PR @sookoll ์ ๊ธฐ์๊ฒ ์๊ฐํฉ๋๋ค.
์ฃ์กํฉ๋๋ค. ๋ถ๋ช ํ ๊ณ ์ฉ ๋ ธ๋๋ฅผ ์๋ฏธํฉ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ์ฌ๊ธฐ์์ ๋ ธ๋ ํ๊ฒฝ์์ ๋ฒ์ด๋ ์ ์๋ค๊ณ ์๊ฐํ์ง ์์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฌ์ค, ๊ทธ๊ฒ์ Webpack์ ๋ฌธ์ ๊ฐ ์๋๋๋ค.
redis-parser
๊ฐhiredis
$ ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ดํ ๋ฌธ์ ์ ๋๋ค. ์ด ๋ฌธ์ ๋ ์ ํํ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋redis-parser
3.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ์ฌ ํด๊ฒฐํ ์ ์์ต๋๋ค.