์ต์ next.js ๋ฆด๋ฆฌ์ค์ ์ข ์์ฑ์ด 0์ธ ๊ฐ๋จํ hello world ์ธ๋ฑ์ค ํ์ด์ง๋ฅผ ์ฌ์ฉํ๋ฉด heroku์์ ๋ค์ ์ค๋ฅ์ ํจ๊ป ์คํ๋์ง ์์ต๋๋ค.
{ Error: Cannot find module '/tmp/build_xxx/node_modules/babel-runtime/helpers/inherits'
at Function.Module._resolveFilename (module.js:455:15)
at Function.Module._load (module.js:403:25)
at Module.require (module.js:483:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/app/.next/dist/pages/index.js:7:18)
at Module._compile (module.js:556:32)
at Object.Module._extensions..js (module.js:565:10)
at Module.load (module.js:473:32)
at tryModuleLoad (module.js:432:12)
at Function.Module._load (module.js:424:3) code: 'MODULE_NOT_FOUND' }
package.json์ ์ด๋ป๊ฒ ์๊ฒผ๋์? Heroku์์ ์๋ํ ์ ์ด ์์ต๋๊น, ์๋๋ฉด ์ด ๋ฒ์ ์์๋ง ์๋ํฉ๋๊น?
readme์์์ ๋์ผํฉ๋๋ค. ์ฒ์์ผ๋ก heroku์์ ์๋ํ์ต๋๋ค.
2016๋ 11์ 5์ผ 19:39 +0200์ Eric Zingeler [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
package.json์ ์ด๋ป๊ฒ ์๊ฒผ๋์? Heroku์์ ์๋ํ ์ ์ด ์์ต๋๊น, ์๋๋ฉด ์ด ๋ฒ์ ์์๋ง ์๋ํฉ๋๊น?
โ
์ค๋ ๋๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฉ์์ง๋ฅผ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub(https://github.com/zeit/next.js/issues/198#issuecomment-258628771)์์ ํ์ธํ๊ฑฐ๋ ์ค๋ ๋๋ฅผ ์์๊ฑฐ(https://github.com/notifications/unsubscribe)ํ์ธ์. -auth/AAhJ2QHX_rT1m5jB_w_o_ghK2Sa2gJ_pks5q7L9TgaJpZM4Kplvy).
devDependencies๊ฐ ํ์ํ ์๋ ์์ต๋๋ค. Heroku๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฐํฌํ ๋๋ง ์ข ์์ฑ์ ์ค์นํฉ๋๋ค.
ํ๋ฒ ํด๋ณด์ธ์:
https://devcenter.heroku.com/articles/nodejs-support#devdependencies
@eezing next
๋ผ๋ ํ๋์ ์ข
์์ฑ๋ง ์์ต๋๋ค.
@nvartolomei
'๋ค์ ์์' ์ ์ '๋ค์ ๋น๋' ๋ช ๋ น์ด ๋ฐ์ํฉ๋๊น?
์๋ ํ์ธ์,
์ ํํ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
2016-11-07T21:26:31.802385+00:00 app[web.1]: { Error: Cannot find module '/tmp/build_55ae646128a2d187aba0de41013a15bc/n
ode_modules/react/react.js'
2016-11-07T21:26:31.802399+00:00 app[web.1]: at Function.Module._resolveFilename (module.js:469:15)
2016-11-07T21:26:31.802401+00:00 app[web.1]: at Function.Module._load (module.js:417:25)
2016-11-07T21:26:31.802401+00:00 app[web.1]: at Module.require (module.js:497:17)
2016-11-07T21:26:31.802402+00:00 app[web.1]: at require (internal/module.js:20:19)
2016-11-07T21:26:31.802403+00:00 app[web.1]: at Object.<anonymous> (/app/.next/dist/pages/index.js:7:14)
2016-11-07T21:26:31.802403+00:00 app[web.1]: at Module._compile (module.js:570:32)
2016-11-07T21:26:31.802404+00:00 app[web.1]: at Object.Module._extensions..js (module.js:579:10)
2016-11-07T21:26:31.802404+00:00 app[web.1]: at Module.load (module.js:487:32)
2016-11-07T21:26:31.802405+00:00 app[web.1]: at tryModuleLoad (module.js:446:12)
2016-11-07T21:26:31.802406+00:00 app[web.1]: at Function.Module._load (module.js:438:3) code: 'MODULE_NOT_FOUND' }
2016-11-07T21:26:31.806064+00:00 app[web.1]: { Error: Cannot find module '/tmp/build_55ae646128a2d187aba0de41013a15bc/n
ode_modules/babel-runtime/helpers/inherits'
2016-11-07T21:26:31.806067+00:00 app[web.1]: at Function.Module._load (module.js:417:25)
2016-11-07T21:26:31.806066+00:00 app[web.1]: at Function.Module._resolveFilename (module.js:469:15)
2016-11-07T21:26:31.806067+00:00 app[web.1]: at Module.require (module.js:497:17)
2016-11-07T21:26:31.806068+00:00 app[web.1]: at require (internal/module.js:20:19)
2016-11-07T21:26:31.806069+00:00 app[web.1]: at Object.<anonymous> (/app/.next/dist/pages/_error.js:7:18)
2016-11-07T21:26:31.806069+00:00 app[web.1]: at Module._compile (module.js:570:32)
2016-11-07T21:26:31.806070+00:00 app[web.1]: at Object.Module._extensions..js (module.js:579:10)
2016-11-07T21:26:31.806071+00:00 app[web.1]: at Module.load (module.js:487:32)
2016-11-07T21:26:31.806071+00:00 app[web.1]: at tryModuleLoad (module.js:446:12)
2016-11-07T21:26:31.806072+00:00 app[web.1]: at Function.Module._load (module.js:438:3) code: 'MODULE_NOT_FOUND' }
2016-11-07T21:26:31.808680+00:00 app[web.1]: (node:23) UnhandledPromiseRejectionWarning: Unhandled promise rejection (r
ejection id: 1): TypeError: res.status is not a function
๋๋ @eezing ์ ์กฐ์ธ์ ๋ฐ๋๊ณ ๋ค์์ ์ฌ์ฉํ์ฌ devDependencies๋ฅผ ๊ฐ์ ๋ก ์ค์นํ์ต๋๋ค.
$ heroku config:set NPM_CONFIG_PRODUCTION=false
ํ์ธํ์ต๋๋ค: next build
๋ช
๋ น์ด next start
์ ์ ๋ฐ์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ @nvartolomei ์ฒ๋ผ ๋๋ next
๋ง ์์กด์ฑ์ผ๋ก ๊ฐ์ง๊ณ ์์ต๋๋ค.
Heroku์์ ์ฑ๊ณต์ ์ผ๋ก ์คํํ๋ ์ฌ๋์ด ์์ต๋๊น?
๊ฐ์ฌ ํด์
@eezing ๋ถํํ๋ ์ง๊ธ์ ์ด๊ฒ์ ํํค์น ์๊ฐ์ด ์์ต๋๋ค.
๋์ผํ ๋ฌธ์ :
{ [Error: Cannot find module '/tmp/build/node_modules/react/react.js'] code: 'MODULE_NOT_FOUND' }
{ [Error: Cannot find module '/tmp/build/node_modules/babel-runtime/helpers/inherits'] code: 'MODULE_NOT_FOUND' }
next.js๋ $#$ next build
$#$์ ์ผ๋ถ require
๊ฒฝ๋ก๋ฅผ ์ ๋ ๊ฒฝ๋ก๋ก ๋ณํํ์ง๋ง ์ด๋ฌํ ๊ฒฝ๋ก๋ ๋ฐํ์์ ํ์ธํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ชจ๋ ์บ์ ๋๋ฌธ์ Heroku๊ฐ ํฉ๋๊น?
์ด๊ฒ์ Heroku ๋น๋ํฉ์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ์ฅ์(์: Flynn ํด๋ฌ์คํฐ)์ ๋ํ๋ฉ๋๋ค.
Error: Cannot find module /app/.next/dist/pages/_error
next build
์ ์์ธํ ์ต์
์ด ์์ต๋๊น?
Flynn ์ฌ๋ฌ๊ทธ(Heroku ๋น๋ํฉ ์ฌ์ฉ)๋ฅผ ๋ค์ด๋ก๋ํ์ฌ next build
์์ฐ์ด ์ฌ๋ฌ๊ทธ๋ก ์ปดํ์ผ๋์ง ์๋๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
PR์ ํตํด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค... ๋ชจ๋ ๊ณณ์์ ์๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํด์ผ ํ ๊ฒ์ ๋๋ค.
๋๋ Flynn๊ณผ Heroku ๋ชจ๋์์ next build
๋จ๊ณ๊ฐ require ๋ฌธ์ ๋ํ ์ ๋ ๊ฒฝ๋ก๋ฅผ ๊ตฝ๋๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋น๋ ์์น( /tmp/build
)๊ฐ ๋ฐํ์ ์์น( /app
)์ ๋์ผํ์ง ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค. ์ด ๋ฒ๊ทธ๋ ๋ ๊ฐ๊ฒฐํ๊ฒ ์ด๋ฆ์ ๋ฐ๊ฟ ์ ์์ต๋๋ค next build
๋ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ง ์์์ผ ํฉ๋๋ค.
heroku/dokku์ ๊ฒฝ์ฐ prestart
npm ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ next.js ์ฑ์ ๋น๋ํ ์ ์์ต๋๋ค.
"scripts": {
"prestart": "next build",
"start": "next start -p ${PORT}",
}
์ @dotcypress , ์ฌ์ ์์ ๋จ๊ณ๋ฅผ ์ถ๊ฐํ๋ฉด ๋ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ๊ฐ์ฌ ํด์
https://github.com/zeit/next.js/issues/204 ๋ ํด๊ฒฐํ ์ ์๋ react
๋ฐ babel-runtime
peerDependencies๋ฅผ ๋ง๋๋ ๊ฒ์ ๊ณ ๋ คํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@arunoda @rauchg ์๊ฐ ?
@nkzawa react
๋ฅผ ํผ์ด ์ข
์์ฑ์ผ๋ก ๋ง๋๋ ๊ฒฝ์ฐ glamor
๋ ํผ์ด ์ข
์์ฑ์ผ๋ก ๋ง๋๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. #184๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ด๊ฒ์ ์ผ๋ฐ์ ์ธ babel-runtime ์ค๋ฅ์ ๊ด๋ จ์ด ์์ต๋๋ค.
๋์ฐ๋ฏธ์ ํด๋ฆฌํ์ ๋นํ์ฑํํ์ฌ CRA์ Storybook์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ๋ฅผ ๋ด
์ฌ์ฉ์์๊ฒ react
๋ฐ react-dom
๋ฅผ ์ ๊ณตํ๋๋ก ์์ฒญํ๋ ๊ฒ์ ๊ฝค ๊ด์ฐฎ์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ babel-runtime์ ์ ๊ณตํ๋๋ก ์์ฒญํ๋ ๊ฒ์ ๋ค์ ์ถํ ๊ฒ์
๋๋ค.
๋์ฐ๋ฏธ๋ฅผ ๋์ง ์์ผ๋ ค๋ฉด Webpack์ require.resolve ๋ง๋ฒ์ ์ฌ์ฉํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
@dotcypress ์์ ์ ๊ณตํ๋ prestart
์๋ฃจ์
์ ์์
์ ์ํํ๊ธฐ์ ์ถฉ๋ถํ์ง๋ง ๋ค์์ ์ ์ํฉ๋๋ค.
A: ์ปดํ์ผํ ๋ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
B: ์ฌ์ฉ์๊ฐ ์ต์ข
๋ฐฐํฌ ๋๋ ํ ๋ฆฌ์ ๊ฒฝ๋ก ์ด๋ฆ์ ์ ๊ณตํ๋๋ก ํ์ฉํ์ฌ ์ปดํ์ผ๋ ์์ฐ์ด ์๋ํ๋๋ก ํฉ๋๋ค. IE: next build {path to project} --runtimeDir=/app
next
์์ ๋ชจ๋์ ํด๊ฒฐํ๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ํธ๋์คํ์ผํ ์ ์์ต๋๋ค.
// before
const foo = require('babel-runtime/foo')
// after
const foo = require('next/require')('babel-runtime/foo')
next/require
๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
export default (moduleId) => require(moduleId)
๋์ require
๊ฐ webpack์์ ์ ๋๋ก ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ webpack ์ปดํ์ผ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
BTW: prestart
์ ๊ทผ ๋ฐฉ์์ Dokku Zero Downtime ๋ฐฐํฌ ์์ ์๋ํ์ง ์์ต๋๋ค.
์ฌํ์ง๋ง ์ด๊ฒ์ ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ์ฐจ๋จ๊ธฐ์
๋๋ค. ์ด๋ป๊ฒ ์์ ์ ๋์๋๋ฆด๊น์?
@nkzawa @rauchg
@dotcypress ์ผ๋ถ ๋น๋ํฉ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. https://github.com/weibeld/heroku-buildpack-run
์ด๋ฅผ ํตํด heroku ์ฌ๋ฌ๊ทธ๋ฅผ ๋น๋ํ ๋ bash ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
@arunoda ํ์ง๋ง ์ด๊ฒ์ด Dokku Zero Downtime Deploys ์ ์ด๋ป๊ฒ ๋์์ด ๋ ๊น์?
Dokku ๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋น๋ํฉ์ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํด๋น ๋น๋ํฉ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ ๋ก ๋ค์ดํ์ ๋ฐฐํฌ ๋ฌธ์ ๋ Next.js์ ์ ํ ๊ด๋ จ์ด ์์ต๋๋ค.
๊ฑด๋ฌผ๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ์ฐ๋ฆฌ์ ์ด์ ์ _๊ฐ๋จํ_ ๋น๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ๊ฒ์
๋๋ค. next
๋ก ๊ฐ๋ฐํ๋ ๊ฒ์ฒ๋ผ next build
next start
๋ก ์์ํฉ๋๋ค.
์ด๊ฒ์ ์ด๋ฏธ ์ฌ๊ธฐ์ ๋ฌธ์ํ๋์ด ์์ต๋๋ค: https://github.com/zeit/next.js#production -deployment
์ง๊ธ , ์ฐ๋ฆฌ๋ ๋น์ ์ด ๋ฐฐํฌํ๋๋ก ํ์ฌ ๊ฐ๋ ์ค์ง ์๊ฐ์ ์์ ๊ณ now alias
๋ฅผ ์ฌ์ฉํ์ฌ "์ต์ข
" URL์ ์ ๊ณตํฉ๋๋ค. ๋จ ํ๋์ ์์ฒญ๋ ์ญ์ ๋์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๋ค์ ๋๋ HTTP API ๋๋ ์ ์ ์ฌ์ดํธ ๋ฑ ํ์ฌ ๋ฐฐํฌํ๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ํด๋น๋ฉ๋๋ค.
๋ฐ๋ผ์ Heroku์ ๋ฐฐํฌํ๋ ๊ฒ๊ณผ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
{ Error: Cannot find module '/tmp/build_78e9.../node_modules/babel-runtime/core-js/object/get-prototype-of' ...
๋ด ๊ฒฝ์ฐ์๋ ์ฑ์ ๋น๋ ์๊ฐ์ด ๋๋ฌด ๊ธธ๊ณ Heroku ์๊ฐ์ด ์ด๊ณผ๋๊ธฐ ๋๋ฌธ์ "prestart": "next build"
์ถ๊ฐ ์ ์์ด ์คํจํฉ๋๋ค. ๊ฒ๋ค๊ฐ, prestart
๋ ์ค์ ๋ก ๋น๋ ๋จ๊ณ๋ฅผ ๋๋ ๊ณณ์ด ์๋๋๋ค. ์ด์์ ์ผ๋ก๋ heroku-postbuild
์ ๋ค์ด๊ฐ์ผ ํฉ๋๋ค(์ฆ, ๋ชจ๋ dyno ์์ ๋์ ํ ๋ฒ ์คํ).
๊ทธ๋์ ์นํฉ ๊ตฌ์ฑ์ ์กฐ์ฌํด ๋ณด์๋๋ฐ react
, babel-runtime
๋ฐ next/css
๋ฑ์ alias
ing์ด ์ถ๋ ฅ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ์์ ๋น๋ ๋๋ ํ ๋ฆฌ tmp
์์ ๋ฐํ์ app
๋๋ ํ ๋ฆฌ๋ก ํ์ผ์ ์ด๋ํ ๋ Heroku๊ฐ ๋์ด์ง๊ฒ ํ๋ ์ ๋ ๊ฒฝ๋ก.
babel-plugin-module-resolver
๋ฐ ํด๋น ๋ณ์นญ ๊ตฌ์ฑ์ ์ ๊ฑฐํ์ฌ ์ ๋ ๊ฒฝ๋ก ์ถ๋ ฅ์ ์ค์งํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ ๊ฒํ๋ฉด next/css
(์ด๋ค ์ด์ ๋ก?) ๋ฑ์ ์ฐพ์ ์ ์์ผ๋ฏ๋ก externals
๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ์ต๋๋ค.
externals: [
'react',
'react-dom',
'next/link',
'next/css',
'next/head'
]
์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ์ด์ next
๊ฐ ์ข
์์ฑ์ธ ๊ฒฝ์ฐ ์๋ฒฝํ๊ฒ ์๋ํฉ๋๋ค. ์ฆ node_modules
์ ์กด์ฌํ์ง๋ง next
์ด ์๊ธฐ ๋๋ฌธ์ ์ด ์ ์ฅ์์ ํ
์คํธ๊ฐ ์ค๋จ๋ฉ๋๋ค. ์ด repo ์์ฒด์ node_modules
์ ์์ผ๋ฏ๋ก ๋ฐํ์์ require('next/css')
๋ฅผ ํธ์ถํ๋ฉด ์กด์ฌํ์ง ์๋๋ค๊ณ ๋ถํํฉ๋๋ค.
์ฌ๊ธฐ ๋ด๊ฐ ๋งํ์ด์. ๋๋ ๋ก์ปฌ ํ
์คํธ๊ฐ ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ๋ผ๋ ๊ฒ์ ์๊ณ ์๊ณ import css from '../../../../css'
์ ๊ฐ์ ๊ฒ์ ์์ฑํ๊ณ ๊ทธ๊ฒ์ด ์๋ํ ๊ฒ์ด๋ผ๊ณ ๊ธฐ๋ํ์ง๋ง ์ด๋ค ์ด์ ์์์ธ์ง ๊ทธ๋ ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด ์ฌ๊ฑด์ ํด๊ฒฐํ๊ธฐ ์ํด ์ด์ ๋ํ ์กฐ์ธ์ ์ฐพ๊ณ ์์ต๋๋ค! :)
์ด๋ก ์ธํด Heroku ATM์ ๋ฐฐํฌํ ์ ์์ผ๋ฏ๋ก ํผ๋๋ฐฑ์ ๋ณด๋ด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๊ฑด๋ฐฐ!
ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ ๋ฐฐํฌ ์ ์ ๋ฏธ๋ฆฌ ๋น๋ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด์ง ์์ต๋๊น? ์๋๋ฉด ๋ด๊ฐ ์ดํดํ์ง ๋ชปํ๋ ๊ฒ์ผ ์๋ ์๋ค
๋ฌผ๋ก , ํ์ง๋ง ์ ๋ ๊ฒฝ๋ก๋ฅผ ํด๊ฒฐํ๋ ๋ฌธ์ ๋ ์ฌ์ ํ ๋จ์ ์์ต๋๋ค. ์ฆ:
import css from 'next/css'
babel-loader๋ฅผ ๊ฑฐ์ณ ์ ๋๊ฐ์ผ๋ก ๋ฐ๋๋๋ค.
import css from '/builddir.../dist/lib/css'
๋ค์ ์ค ํ๋ ๋๋ฌธ์ ์ฑ์ด dyno์ ์คํ๋๋ฉด ํด๊ฒฐ๋์ง ์์ต๋๋ค.
a) /builddir.../
๋ Heroku์ ๊ตฌ์ถ๋ ๊ฒฝ์ฐ ๋ ์ด์ ์กด์ฌํ์ง ์์ต๋๋ค.
b) /builddir.../
๊ฐ ๋ก์ปฌ์์ ๋น๋๋์ด Heroku๋ก ํธ์๋๋ฉด ์ ํ ์กด์ฌํ์ง ์์ต๋๋ค.
๊ทธ๋์ next/css
๊ฐ node_modules/next/css
๋ก ์ฆ์ ํด๊ฒฐ๋ ๋ ์จ๋ฆฌ์ด์ฑ์ด ํ์ํ ์ด์ ๊ฐ ๋ฌด์์ธ์ง ๊ถ๊ธํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ ์ค๋ฅ ํ์ด์ง/๋ก์ปฌ ํ
์คํธ์ฉ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์๊ฒ ์ต๋๋ค @benhjames. ์ฐ๋ฆฌ๊ฐ ์ ๋ ๊ฒฝ๋ก๋ก ๊ฐ๊ณ ์๋ค๋ ๊ฒ์ ๊นจ๋ซ์ง ๋ชปํ์ต๋๋ค. ๋๋ ๊ทธ๋ค์ ์๋์ ์ผ๋ก ๋ง๋ค๋ฉด์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ค๊ณ ๊ฐ์ ํฉ๋๊น? ๊ทธ๋ ๋ค๋ฉด ๋ ์ข๊ณ ๋ ๋ช ํํ ๋ฌธ์ ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
ํ๋ก์ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๊ฑฑ์ ํ์ง ๋ง์ธ์. ์ ์ ํ ์์ฑ๋ฉ๋๋ค :+1:
https://github.com/mars/heroku-nextjs ๊ฐ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค
ํ์ผ์ ๋ณต์ฌํ๋ heroku ๋น๋ํฉ์ด ์์ ์ด๋ผ๊ณ ๋งํ๊ธฐ๋ ๊บผ๋ ค์ง๋๋ค. ๋ฌธ์ ์ ํต์ฌ์ ๋น๋๋ ํ์ผ์ ์ฝ์ ๋ ์ ๋ ๊ฒฝ๋ก์ ๋๋ค(#360 ๋ฐ PR #361 ์ฐธ์กฐ). ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ์์ ๋น๋ํ๊ณ ์ ๊ณตํ๋ ๋ค๋ฅธ PaaS์์๋ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค(๋๋ ์ค์ ๋ก ์์ ์ ์ปดํจํฐ์์ ๋๋ ํ ๋ฆฌ ์ด๋).
๊ทธ ๋์์๋ ํด๋น ๋น๋ํฉ์ ์ฌ์ฉํ๋ฉด ์ ์๋ํฉ๋๋ค!
@benhjames ์ ์์ ํ ๋์ํฉ๋๋ค.
์์ ์ฌํญ์ด ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์ด ์ผ๋ จ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋๋ผ ์ฐ์ํ ์์ ์ฌํญ์ธ์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ ํญ์ webpack๋ ํจ์นํ ์ ์์ต๋๋ค.
์๋
ํ์ธ์, ๋จ์ง ๊ธฐ์ฌํฉ๋๋ค. ๋๋ ๋ฌธ์ ์ ๋ํ @benhjames์ ์ฝ๋ฉํธ ๋๋ถ์ .babelrc ๋ฅผ ์ ์ํ ์ ์๋ ๋ฒ ํ์ ๋ํ ์ต๊ทผ ์ปค๋ฐ์ผ๋ก Heroku์์ ๋ด ์ฑ์ ์คํํ ์ ์์์ต๋๋ค.
๋ค์์ ํฌํจํ๋ ๋ฃจํธ์ .babelrc
ํ์ผ์ ์ถ๊ฐํ์ต๋๋ค.
{
"presets" : [
"es2015",
"react",
"stage-0"
],
"plugins": [
"react-require",
"transform-async-to-generator",
"transform-object-rest-spread",
"transform-class-properties",
"transform-runtime"
]
}
๋๋ ๋ํ package.json
์ ์ถ๊ฐํ์ต๋๋ค.
{
...
"scripts": {
...
"heroku-postbuild": "next build"
},
"dependencies": {
"babel": "^6.5.2",
"babel-loader": "^6.2.10",
"babel-plugin-react-require": "^3.0.0",
"babel-plugin-transform-async-to-generator": "^6.16.0",
"babel-plugin-transform-class-properties": "^6.19.0",
"babel-plugin-transform-export-extensions": "^6.8.0",
"babel-plugin-transform-object-rest-spread": "^6.20.2",
"babel-plugin-transform-runtime": "^6.15.0",
"babel-polyfill": "^6.20.0",
"babel-preset-es2015": "^6.18.0",
"babel-preset-react": "^6.16.0",
"babel-preset-stage-0": "^6.16.0",
"babel-preset-stage-3": "^6.17.0",
"babel-runtime": "^6.20.0",
...
}
}
๋๊ตฌ์๊ฒ๋ ๋์์ด ๋ ์ ์๋ค๋ฉด.
@nkzawa @rauchg NPM3+์๋ง ์ต์ ํ๋ babel ํ๋ฆฌ์
์ ์ถ์ํ ์ ์์์ง๋ ๋ชจ๋ฆ
๋๋ค.
๊ทธ๋์ ๋ชจ๋๊ฐ ์ด๋ฐ ์ผ์ ํ๊ณ ์ถ์ดํ์ง ์์ต๋๋ค.
๋๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก๋ ํ ์ ์์ต๋๋ค.
์ฌ๋ฌ๋ถ์ ์ด๋ป๊ฒ ์๊ฐํ์ธ์?
NPM3+์๋ง ์ต์ ํ๋ babel ํ๋ฆฌ์ ์ ์ถ์ํ ์๋ ์์ต๋๋ค.
์ด๊ฒ์ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๊น?
NPM 3+์์๋ ์ฌ๋ฌ ๋ชจ๋์ด ๋ค๋ฅธ ๋ฒ์ ์ ๋ํด ๋์ผํ ์ข
์์ฑ์ ๊ฐ๋ ๊ฒฝ์ฐ ์ด๊ฒ์ด ์๋ํ๋์ง ๊ถ๊ธํฉ๋๋ค. NODE_PATH
๋ก ์ค์ ํ๋ ๊ฒ์ด ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฌธ์ ๊ฐ ๋๋ babel ํ๋ฌ๊ทธ์ธ( babel-plugin-module-resolver
)์ ์๋ตํ๋ .babelrc
๊ฐ @nkzawa ๊ฐ ์ธ๊ธํ ๋๋ก ์๋ํ ์ง ํ์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด react
์ ๋ชจ๋์ด ์ฌ๋ฌ ๊ฐ ์๋ ๊ฒฝ์ฐ , react
์ next
๋ฒ์ ์ผ๋ก ํด์๋์ง ์๊ณ ๋์ด์ง ์ ์์ต๋๋ค. (๊ฐ์์ ์ผ๋ก) ๋ค์๊ณผ ๊ฐ์ ํจํค์ง๊ฐ ์๋ ๊ฒฝ์ฐ:
"next": "latest"
"react": "latest"
๊ทธ๋ฐ ๋ค์ ๋ฐํ์์ react
๋ node_modules/react
๋ก ํด์๋์ง๋ง ์ค์ ๋ก๋ node_modules/next/node_modules/react
๊ฐ ํ์ํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก NODE_PATH
๋ require
๊ฐ ์ ์์ ์ผ๋ก ํด๊ฒฐ๋์ง ์๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ๋๋ฏ๋ก $ NODE_PATH
๋ฅผ ์ค์ ํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ์ด๋ป๊ฒ ํด๊ฒฐ๋๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. react
NODE_PATH
๋ ๊ฒ์๋์ง ์์ต๋๊น?
NODE_PATH๋ require๊ฐ ์ ์์ ์ผ๋ก ํด๊ฒฐ๋์ง ์๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ๋ฉ๋๋ค.
๋ชฐ๋์ด์ :|
require('react')
๋ฅผ require('next/react')
๋ก ๋ฐ๊พธ๊ณ $# next/react
์์ React ๋ฒ์ ์ ์ ๊ณตํ ์ ์์๊น์?
๋ค, ๊ฝค ๊น๋ํ ๊ฒ ๊ฐ์์ - ์ข์ ์์ด๋์ด๋ค์! ๋ํ babel-runtime
, react-dom
๋ฐ styled-jsx
๋ก ์ด๋ฅผ ์ํํด์ผ ํฉ๋๋ค.
Flynn๊ณผ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค next build
๋ /tmp์์ ์คํ๋๋ฉฐ ์ ๋ ๊ฒฝ๋ก๊ฐ /tmp
๋ฅผ ๋ณด๊ธฐ ๋๋ฌธ์ ์์ฉ ํ๋ก๊ทธ๋จ ์์น๋ก ์ด๋ํ๋ฉด ์๋ํ์ง ์์ต๋๋ค.
์ด ๋ฌธ์ ์ ๋ชจ๋ ๊ด๋ จ ๋ฌธ์ ๊ฐ ๋ซํ ์ด์ ๊ฐ ์ฝ๊ฐ ํผ๋์ค๋ฝ์ต๋๋ค. ์๋ ค์ง ์์ ์ฌํญ์ด ์์ต๋๊น?
์ ๊ฒฝ์ฐ์๋ ์ด Procfile์ด ํจ๊ณผ๊ฐ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
web: npm run build && npm start -- --port $PORT
๊ทธ๊ฒ์ด ์ด์์ ์ธ์ง ํ์ ํ ์ ์์
๋ค, ์ด ๋ฌธ์ (๋ ๋ง์ ๋ ผ์๊ฐ ์์) ๋๋ #360(ํ ๋ก ์ ์ ์ง๋ง ์ค์ ๋ฌธ์ ๋ฅผ ๋ ์์ธํ ์ ์ํจ)์ ๋ค์ ๊ณต๊ฐ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค!
๊ทธ๋ฆฌ๊ณ ์, Procfile์์ ๊ทธ๋ ๊ฒ ํ๋ ๊ฒ์ ์ด์์ ์ด์ง ์์ต๋๋ค. ์๋ํ๋ฉด a) dyno๊ฐ ๋ณ๊ฒฝ๋์ง ์์์์ง๋ผ๋ dyno๋ฅผ ๋ค์ ์์ํ ๋๋ง๋ค ๋น๋๋ฅผ ์คํํ๊ฒ ๋๊ณ b) dyno๋ฅผ ์์ํ๋ ๋์ ์๊ฐ์ด ์ด๊ณผ๋๋ ๊ฒฝ์ฐ(๋ฐ์ํ ๋์๊ฒ!) ๊ทธ๋ฌ๋ฉด ๋ค์ด๋ ธ๊ฐ ์ถฉ๋ํฉ๋๋ค.
์ง๊ธ๊น์ง ๊ฐ์ฅ ์ข์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ heroku-nextjs-build ํฉ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
Babel ๋ก๋์์ react
๋ฅผ next/react
๋ก ๋ณํํ๊ธฐ๋ง ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ @nkzawa ์ ์ ์์ด ๋ง์์ ๋ญ๋๋ค. ๊ทธ๋๋ ๋ก์ปฌ ํ
์คํธ๋ฅผ ์คํํ ๋ ์ด๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ๊ถ๊ธํฉ๋๋ค( node_modules
์ ์๋ ๊ฒฝ์ฐ next
๋ฅผ ์์ฒด์ ์ผ๋ก ์ด๋ป๊ฒ ํด๊ฒฐํฉ๋๊น?) ์ด๋๊ฐ์ ํ๋๊ทธ๊ฐ ํ์ํฉ๋๋ค(์ด์ฉ๋ฉด env var) ํ
์คํธ๋ฅผ ํ์ง ์์ ๋๋ง ๋ค์ ์์ฑํฉ๋๋ค... ์ฌ๊ธฐ์๋ ์๋นํ ๋ง์ ๋ณต์ก์ฑ์ด ์์ต๋๋ค. :)
๋๋ ๋ ์๊ฐํด๋ณด๋ฉด ํ
์คํธ๊ฐ ์คํ๋๋ ๋์ NODE_PATH
๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด next/link
๋ ํด๊ฒฐ๋์ง ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
now
์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค. ๋ถํํ๋ DB(์ฆ, PG)๊ฐ ํ์ํ๋ฏ๋ก Postgres๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ด์จ๋ ์ฌ๊ธฐ์ ๋์ ์๋ ๋๋ถ๋ถ์ ์ ๊ทผ ๋ฐฉ์์ ๋ฌธ์ ๋ ๋ฐฑ์๋๋ฅผ ์คํํ์ง ์๊ณ ๋ ํด๋ผ์ด์ธํธ ์ฑ์ ๋น๋ํ ์ ์๋ค๊ณ ๊ฐ์ ํ๋ค๋ ๊ฒ์
๋๋ค. ์ ๊ฒฝ์ฐ์๋ babel-relay ํ๋ฌ๊ทธ์ธ์ด GraphQL ์คํค๋ง๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋ชจ๋ ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ ์๊ตฌ ์ฌํญ์ด ํด๊ฒฐ๋ ์ ์๋์ง ํ์ธํ ์ ์๋๋ก BE๋ฅผ ์คํํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ด ์๋ฏธํ๋ ๋ฐ๋ ์๋ฒ๊ฐ ์์๋ ํ์ ๋น๋๋ฅผ ์คํํด์ผ ํ๋ค๋ ๊ฒ์
๋๋ค. ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ๋น๋ ํ๋ก์ธ์ค๋ฅผ ์์ํ๋ API๊ฐ ์์ต๋๊น?
๋๊ตฐ๊ฐ๊ฐ ์์ง dokku ๋ด์์ next.js๋ฅผ ์คํํ ์ ์์์ต๋๊น?
dokku config:set <appname> NPM_CONFIG_PRODUCTION=false
๋ฅผ ์คํํ์ฌ ํด๊ฒฐํ ์ ์๋ ๊ฐ๋ฐ ์ข
์์ฑ์์ babel ํ๋ฌ๊ทธ์ธ์ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
๋ํ ๋ค์์ ์ถ๊ฐํ์ต๋๋ค.
"prestart": "next build",
"start": "next start -p $PORT",
์์์ ์ ์ํ ๊ฒ์ฒ๋ผ ์ง๊ธ ์ฑ๊ณต์ ์ผ๋ก ๋น๋/์คํ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ง๋ง ์ฌ์ ํ ์ฑ์ ์ก์ธ์คํ ์ ์์ต๋๋ค./ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ next.js์ ๊ด๋ จ์ด ์๋ ํฌํธ ๋งคํ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด์จ๋ ์ฌ์ ์์ ํดํน์ด ์๋ชป๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ๋ ๋์ ์๋ฃจ์ ์ด ์๋์ง ์๋ ๊ฒ์ด ํฅ๋ฏธ๋ก์ธ ๊ฒ์ ๋๋ค. ๋.
์ฐ๋ฆฌ๋ https://github.com/zeit/next.js/pull/1164 ๋ฅผ ๊ฐ์ ธ๊ฐ์ต๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ํฐ ์ด๋ ค์ ์์ด heroku์์ Next.js ์ฑ์ ์ฌ์ฉํ ์ ์์์ต๋๋ค.
@sakulstra : ์, dokku์์ ์คํํฉ๋๋ค. ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
postinstall
express
+ next
์์ ์๋ฒฝํ๊ฒ ์๋
"build": "next build",
"dev": "node server.js",
"postinstall": "npm run build",
"start": "NODE_ENV=production node server.js"
์๋ ํ์ธ์, ์ ๋ง ๊ทธ๋ฐ๊ฐ์ ์๋๋ฉด heroku์ ๋ฐฐํฌํ๋ ค๊ณ ํ๋ฉด ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํฉ๋๊น?
๋จผ์ ๋ด ์ฑ์ด์์ง๋ง ๋ค์ ์์ ์์ ๊ธฐ๋ณธ custom-server-express๋ฅผ ์๋ํ์ต๋๋ค. https://github.com/mars/heroku-nextjs-custom-server-express , @jlobos post install, @havenS babel ์ถ๊ฐ, ์ฌ๊ธฐ์์ ๊ฐ์กฐ ํ์๋ ์ด ๋ฌธ์ ์ ๊ด๋ จ๋ ๋ชจ๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์๋ํ์ต๋๋ค. ์๋ฌด ๊ฒ๋ ์๋ํ์ง ์๊ณ ํญ์ ์๊ฐ ์ด๊ณผ๋์์ต๋๋ค.
ํจํค์ง ์ ์๋:
{
"scripts": {
"dev": "node server.js",
"build": "next build",
"start": "NODE_ENV=production node server.js",
"heroku-postbuild": "heroku-nextjs-build"
},
"dependencies": {
"@mars/heroku-nextjs-build": "^2.0.0",
"express": "^4.14.0",
"next": "latest",
"react": "^15.4.2",
"react-dom": "^15.4.2"
},
"engines": {
"node": "6.9.x"
},
"cacheDirectories": [
"nextjs/node_modules"
]
}
ํ์ง๋ง now.sh์์๋ ๋์ผํ ์์ ์ด ์๋ฒฝํ๊ฒ ์๋ํ๋ ๊ฒ์ ๋๋ผ์ด ์ผ์ด ์๋๋๋ค. ๋ด ๋ฌธ์ ๋ ์๊ฐ ์ด๊ณผ๊ฐ heroku๊ฐ ์ ๊ณตํ๋ ์ ์ผํ ๊ด๋ จ ์ ๋ณด๋ผ๋ ๊ฒ์ ๋๋ค. ์ถ์ฒ ์ฌํญ์ด ์์ต๋๊น?
@bbnnt ์ ๋ Heroku์์ atm ๋ฌธ์ ์์ด ์คํ ์ค์
๋๋ค. ์ฌ์ฉ์ ์ ์ ๋น๋ํฉ์ ์ฌ์ฉํด์ผ ํ๋ ๋ฌธ์ ๋ฅผ ์์ ํ๊ธฐ ๋๋ฌธ์ @mars/heroku-nextjs-build
๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์์ต๋๋ค. ๐
build
์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ npm ์คํฌ๋ฆฝํธ "heroku-postbuild": "npm run build"
๊ฐ ์์ต๋๋ค. "build": "next build"
- ์ฝ 1๋ถ ์ ๋ ๊ฑธ๋ฆฌ์ง๋ง postbuild
์๊ฐ ์ ํ ๋ด์ ์์ต๋๋ค.
์ ์ฒด ์๊ฐ ์ด๊ณผ ์ค๋ฅ๋ ๋ฌด์์ ๋๊น? ๋น๋ํ ๋ ๋ฌด์ธ๊ฐ๊ฐ ์คํจํ์ฌ ์ด๋๊ฐ์์ ์ค๋จ๋ ์ ์์ต๋๋ค. ์ฑ์ ๋ก์ปฌ์์ ์ ๋๋ก ๋น๋ํ ์ ์์ต๋๊น?
์ด ๋ฉ์์ง๋ฅผ ๋๋ฌด ์ผ์ฐ ๋ณด๋์ต๋๋ค. ๋ด ์๋ชป์ด์ผ. ์๋ก์ด heroku ์ฑ์ผ๋ก ์์ํ์ต๋๋ค. ๋ด๊ฐ ์ ๊ฐํ๋์ง ์กฐ์ฌํ์ง ์๊ณ ์๋ฒฝํ๊ฒ ์๋ํ๋ค๊ณ ๋งํ ์ ์์ต๋๋ค!
์ค๋ ๋ง ํต๊ณผํ์ต๋๋ค. ์๋์ํค๋ ๋ฐ๋ ๋ ๋ถ๋ถ์ด ์์์ต๋๋ค.
devDependencies
์์ dependencies
์ด๋ํฉ๋๋ค. ๋๋ ์์ง์๋ค: "babel-plugin-module-resolver": "^2.7.1",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
๋๋ ์์ง์ด์ง ์์๋ค:
"babel-eslint": "^7.2.3",
package.json
์์ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๊ณ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ฅผ ์์ ํ์ต๋๋ค. "heroku-postbuild": "next build",
"start": "next start -p $PORT",
์ค๋ ์ด๊ฒ์ ์๋ํ์ต๋๋ค. @KidkArolis ์ ๊ฒฝ์ฐ ๋ด ์๋ฃจ์
์ ๋ค์์ ์ฌ์ฉํ์ฌ Procfile
๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
web: npm run build && npm start -- --port $PORT
heroku-postbuild
~ package.json
:
{
"name": "my-nextjs-app",
"scripts": {
"dev": "next",
"build": "next build",
"start": "next start",
"heroku-postbuild": "next build"
},
"dependencies": {
"lodash": "^4.17.4",
"next": "^3.0.0-beta16",
"react": "^15.6.1",
"react-dom": "^15.6.1"
}
}
๋ณด์๋ค์ํผ dependencies
์ ๋ํ ์ถ๊ฐ ๋ณ๊ฒฝ์ ํ์ํ์ง ์์์ต๋๋ค.
@tomsoderlund , ๊ทธ๊ฒ์ ๋น์ ์ด ๋น์ ์ dyno๋ฅผ ๋ค์ ์์ํ ๋๋ง๋ค ๋น๋๋ฅผ ์ํํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๊น?
๋ ์ด์ Heroku์ฉ ๋น๋ํฉ์ด๋ ์ฌ์ฉ์ ์ ์ procfile(๋ค์ v2+)์ด ํ์ํ์ง ์์ต๋๋ค. www.actionherojs.com ์ ๋ค์ ํ๋ก์ ํธ์ด๋ฉฐ ์ ์ฒด ์์ค๋ https://github.com/actionhero/www.actionherojs.com์ ๋๋ค.
package.json
์ ๋ค์์ ํฌํจํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
"scripts": {
"dev": "node server.js",
"build": "next build",
"postinstall": "npm run build",
"start": "NODE_ENV=production node server.js"
}
@evatahler ์ด๊ฒ์ ์ข์ ์์์ ๋๋ค! :100:
@jcheroske 100% ํ์ ํ ์๋ ์์ง๋ง ๋ค์ ์์ํ๋ ๋ฐ ํ์ํ ์๊ฐ๊ณผ ๋น๋ํ ๋(๋น๋ํ๋ ๋์ heroku-postbuild
๊ฐ ์์๋๋ ๊ฒ์ ๋ณผ ์ ์์ )์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ด ๋งํ๊ณ ์ถ์ต๋๋ค.
์๋ ํ์ธ์, ๋ง์ ํ์ผ์ ์ญ์ ํ๋๋ฐ Heroku๋ก ํธ์ํ ๋ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด์ ๋น๋์์ ํด๋น ํ์ผ ์ค ํ๋๋ฅผ ์ฐพ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๊น? ์ ์ด๋ฐ ์ผ์ด ์ผ์ด๋๊ณ ์ด๋์์ ์๋ชป๋์๋์ง ์ดํดํ์ง ๋ชปํฉ๋๋ค. ์ ์ ํ ๋ฒ ์ด ๋ฌธ์ ์ ์ง๋ฉดํ์ง๋ง ๋ถ๋ช ํ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
Error: ./pages/profile.js?entry
Module not found: Error: Can't resolve '../components/BeenThereDoneThat' in '/tmp/build_1da9423f972469c21ed0ce9fed0e7555/pages'
๊ทธ๋ฐ ๋ค์ ์ฌ๋ฌ ํ์ผ ํ์ฅ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๋๋ ํฐ๋ฆฌ์์ ํ์ผ์ ์ฐพ์ผ๋ ค๊ณ ์๋ํฉ๋๋ค. ๋ ์ด์ ์กด์ฌํ์ง ์์ต๋๋ค.
heroku repo:purge_cache -a appname
์ heroku repo:reset -a appname
๋ ์ฌ์ฉํด ๋ณด์์ง๋ง ํจ๊ณผ๊ฐ ์์์ต๋๋ค.
heroku-postbuild
๋ฅผ ์ฌ์ฉํด๋ ์๋ํ์ง ์์ต๋๋ค. ์ด์ ๋ ๋ฌด์์
๋๊น? ๋์์ค! ๊ฐ์ฌ ํด์! :)
๋ก์ปฌ์์ 'npm run build' ๋ฐ 'npm run start'๋ฅผ ์คํํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์๋ํฉ๋๋ค. Heroku์ ํธ์ํ๋ฉด ๋ค์์ ์ป์ต๋๋ค.
Counting objects: 15, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (15/15), 1.68 KiB | 0 bytes/s, done.
Total 15 (delta 10), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Node.js app detected
remote:
remote: -----> Creating runtime environment
remote:
remote: NPM_CONFIG_LOGLEVEL=error
remote: NPM_CONFIG_PRODUCTION=true
remote: NODE_VERBOSE=false
remote: NODE_ENV=production
remote: NODE_MODULES_CACHE=true
remote:
remote: -----> Installing binaries
remote: engines.node (package.json): unspecified
remote: engines.npm (package.json): unspecified (use default)
remote:
remote: Resolving node version 6.x...
remote: Downloading and installing node 6.11.2...
remote: Detected package-lock.json: defaulting npm to version 5.x.x
remote: Bootstrapping npm 5.x.x (replacing 3.10.10)...
remote: npm 5.3.0 installed
remote:
remote: -----> Restoring cache
remote: Loading 2 from cacheDirectories (default):
remote: - node_modules
remote: - bower_components (not cached - skipping)
remote:
remote: -----> Building dependencies
remote: Installing node modules (package.json + package-lock)
remote: added 138 packages, removed 29 packages, updated 55 packages and moved 38 packages in 15.982s
remote: Running heroku-postbuild
remote:
remote: > [email protected] heroku-postbuild /tmp/build_ae550831d468592305c997f870a65ebf
remote: > next build
remote:
remote: module.js:471
remote: throw err;
remote: ^
remote:
remote: Error: Cannot find module 'webpack'
remote: at Function.Module._resolveFilename (module.js:469:15)
remote: at Function.Module._load (module.js:417:25)
remote: at Module.require (module.js:497:17)
remote: at require (internal/module.js:20:19)
remote: at Object.<anonymous> (/tmp/build_ae550831d468592305c997f870a65ebf/node_modules/next/dist/server/build/webpack.js:35:16)
remote: at Module._compile (module.js:570:32)
remote: at Object.Module._extensions..js (module.js:579:10)
remote: at Module.load (module.js:487:32)
remote: at tryModuleLoad (module.js:446:12)
remote: at Function.Module._load (module.js:438:3)
remote: npm ERR! code ELIFECYCLE
remote: npm ERR! errno 1
remote: npm ERR! [email protected] heroku-postbuild: `next build`
remote: npm ERR! Exit status 1
remote: npm ERR!
remote: npm ERR! Failed at the [email protected] heroku-postbuild script.
remote: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
remote:
remote: npm ERR! A complete log of this run can be found in:
remote: npm ERR! /app/.npm/_logs/2017-08-17T12_08_45_682Z-debug.log
remote:
remote: -----> Build failed
remote:
remote: We're sorry this build is failing! You can troubleshoot common issues here:
remote: https://devcenter.heroku.com/articles/troubleshooting-node-deploys
remote:
remote: Some possible problems:
remote:
remote: - Node version not specified in package.json
remote: https://devcenter.heroku.com/articles/nodejs-support#specifying-a-node-js-version
remote:
remote: Love,
remote: Heroku
remote:
remote: ! Push rejected, failed to compile Node.js app.
remote:
remote: ! Push failed
remote: Verifying deploy...
์ด์ ์๋ heroku์์ ์ ์๋ํ๊ณ 'connect-redis' ์ธ์ ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ๋ server.js ์คํฌ๋ฆฝํธ๋ฅผ ์ผ๋ถ ์ ๋ฐ์ดํธํ๋๋ฐ ์ด์ ์์ ๊ฐ์ ์ผ์ด ๋ฐ์ํฉ๋๋ค.
๋ด Heroku ์ธ์คํด์ค์์ ์บ์๋ฅผ ์ ๊ฑฐํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
Counting objects: 15, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (15/15), 1.68 KiB | 0 bytes/s, done.
Total 15 (delta 10), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Node.js app detected
remote:
remote: -----> Creating runtime environment
remote:
remote: NPM_CONFIG_LOGLEVEL=error
remote: NPM_CONFIG_PRODUCTION=true
remote: NODE_VERBOSE=false
remote: NODE_ENV=production
remote: NODE_MODULES_CACHE=true
remote:
remote: -----> Installing binaries
remote: engines.node (package.json): unspecified
remote: engines.npm (package.json): unspecified (use default)
remote:
remote: Resolving node version 6.x...
remote: Downloading and installing node 6.11.2...
remote: Detected package-lock.json: defaulting npm to version 5.x.x
remote: Bootstrapping npm 5.x.x (replacing 3.10.10)...
remote: npm 5.3.0 installed
remote:
remote: -----> Restoring cache
remote: Skipping cache restore (not-found)
remote:
remote: -----> Building dependencies
remote: Installing node modules (package.json + package-lock)
remote:
remote: > [email protected] install /tmp/build_6e7c0b3c49351b622334001f0b7aa85b/node_modules/tomahawk/node_modules/socket.io/node_modules/engine.io/node_modules/ws
remote: > (node-gyp rebuild 2> builderror.log) || (exit 0)
remote:
remote: make: Entering directory '/tmp/build_6e7c0b3c49351b622334001f0b7aa85b/node_modules/tomahawk/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build'
remote: CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
remote: bufferutil.target.mk:96: recipe for target 'Release/obj.target/bufferutil/src/bufferutil.o' failed
remote: make: Leaving directory '/tmp/build_6e7c0b3c49351b622334001f0b7aa85b/node_modules/tomahawk/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build'
remote:
remote: > [email protected] install /tmp/build_6e7c0b3c49351b622334001f0b7aa85b/node_modules/tomahawk/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws
remote: > (node-gyp rebuild 2> builderror.log) || (exit 0)
remote:
remote: make: Entering directory '/tmp/build_6e7c0b3c49351b622334001f0b7aa85b/node_modules/tomahawk/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build'
remote: CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
remote: bufferutil.target.mk:96: recipe for target 'Release/obj.target/bufferutil/src/bufferutil.o' failed
remote: make: Leaving directory '/tmp/build_6e7c0b3c49351b622334001f0b7aa85b/node_modules/tomahawk/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build'
remote:
remote: > [email protected] postinstall /tmp/build_6e7c0b3c49351b622334001f0b7aa85b/node_modules/uglifyjs-webpack-plugin
remote: > node lib/post_install.js
remote:
remote: added 1009 packages in 41.242s
remote: Running heroku-postbuild
remote:
remote: > [email protected] heroku-postbuild /tmp/build_6e7c0b3c49351b622334001f0b7aa85b
remote: > next build
remote:
remote: module.js:471
remote: throw err;
remote: ^
remote:
remote: Error: Cannot find module 'webpack/lib/RequestShortener'
remote: at Function.Module._resolveFilename (module.js:469:15)
remote: at Function.Module._load (module.js:417:25)
remote: at Module.require (module.js:497:17)
remote: at require (internal/module.js:20:19)
remote: at Object.<anonymous> (/tmp/build_6e7c0b3c49351b622334001f0b7aa85b/node_modules/friendly-errors-webpack-plugin/src/core/extractWebpackError.js:4:26)
remote: at Module._compile (module.js:570:32)
remote: at Object.Module._extensions..js (module.js:579:10)
remote: at Module.load (module.js:487:32)
remote: at tryModuleLoad (module.js:446:12)
remote: at Function.Module._load (module.js:438:3)
remote: npm ERR! code ELIFECYCLE
remote: npm ERR! errno 1
remote: npm ERR! [email protected] heroku-postbuild: `next build`
remote: npm ERR! Exit status 1
remote: npm ERR!
remote: npm ERR! Failed at the [email protected] heroku-postbuild script.
remote: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
remote:
remote: npm ERR! A complete log of this run can be found in:
remote: npm ERR! /app/.npm/_logs/2017-08-17T12_15_48_787Z-debug.log
remote:
remote: -----> Build failed
remote:
remote: We're sorry this build is failing! You can troubleshoot common issues here:
remote: https://devcenter.heroku.com/articles/troubleshooting-node-deploys
remote:
remote: Some possible problems:
remote:
remote: - Node version not specified in package.json
remote: https://devcenter.heroku.com/articles/nodejs-support#specifying-a-node-js-version
remote:
remote: Love,
remote: Heroku
remote:
remote: ! Push rejected, failed to compile Node.js app.
remote:
remote: ! Push failed
remote: Verifying deploy...
remote:
remote: ! Push rejected to ....
remote:
@paulwehner ๊ฐ ์ด์ํด ๋ณด์
๋๋ค package-lock.json
๋ฅผ ์ฌ์์ฑํ๊ฑฐ๋ ์ค์ ๋ก ์์ฌ ์ ๊ธ ํ์ผ์ ์ฌ์ฉํ๋ฉด ์ด๋ป๊ฒ ๋ฉ๋๊น?
Next.js 3 ๋ฒ ํ์์ 3.2.2๋ก ์ ๊ทธ๋ ์ด๋ํ ํ Heroku๊ฐ NPM์ ์ฐพ์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ์์์ง๋ง Heroku์ ๋ ธ๋ ๋ชจ๋ ์บ์ฑ์ ๋นํ์ฑํํ๋ฉด ํด๊ฒฐ๋์์ต๋๋ค.
heroku config:set NODE_MODULES_CACHE=false
๋ฌธ์ ๊ฐ Heroku ํ๋ก๋์ ์ธ ๊ฒฝ์ฐ ์์ค๋ devDependecies ๋ฅผ ์ค์นํ์ง ์์ต๋๋ค .
๋ฐ๋ผ์ ํ์ํ ๋ชจ๋ ๋น๋ ๋ชจ๋์ ์ข ์์ฑ์ผ๋ก ์ด๋ํ์ญ์์ค.
๊ทธ๋ฅ ๋ชป์๊ฒผ์ง๋ง Heroku๋ ๊ทธ๋ ๊ฒ ์๋ํฉ๋๋ค ...
ํ์ธํ ๊ฐ์น๊ฐ ์๋ ๋ช ๊ฐ์ง ์ฌํญ ์ค ์ผ๋ถ๋ ์ด๋ฏธ ์ฌ๊ธฐ์ ์ธ๊ธ๋์ด ์์ต๋๋ค.
์ฌ์ ํ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ์ฌ๊ธฐ์ ๋ ๋ค๋ฅธ ์ฌ๋ฏธ์๋ ํด๊ฒฐ์ฑ
์ด ์์ต๋๋ค. .next
๋ฒ๋ค์ ๋น๋ํ ๋ค์ ์์ ๋ช
๋ น์ ์ง์ฐ์ํค๋ ์ฌ์ ์์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ญ๋๋ค.
./prestart.js
// Delay the yarn start script until .next has been fully built
setTimeout(function() {
let exec = require('child_process').exec, child;
child = exec('yarn build',
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
}, 5000)
./ํจํค์ง.json
์ฌ์ฉ์ ์ ์ server.js ํ์ผ์ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ start
์คํฌ๋ฆฝํธ๋ก next start
๋ฅผ ์คํํ์ญ์์ค.
"scripts": {
"build": "next build",
"prestart": "node ./prestart.js",
"start": "NODE_ENV=production node server.js -p $PORT",
},
๋๋ ๋ค์ 5์์์ด heroku์์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ฐฐํฌ ํ heroku์ ์ค๋ฅ ์ค๋ํซ
2018-02-15T19:57:06.616452+00:00 app[web.1]: at require (internal/module.js:20:19)
2018-02-15T19:57:06.616456+00:00 app[web.1]: at Object.187 (/app/.next/dist/bundles/pages/_document.js:86:18)
2018-02-15T19:57:06.616458+00:00 app[web.1]: at __webpack_require__ (/app/.next/dist/bundles/pages/_document.js:23:31)
2018-02-15T19:57:06.616460+00:00 app[web.1]: at Object.186 (/app/.next/dist/bundles/pages/_document.js:78:18)
2018-02-15T19:57:06.616461+00:00 app[web.1]: at __webpack_require__ (/app/.next/dist/bundles/pages/_document.js:23:31)
2018-02-15T19:57:06.616463+00:00 app[web.1]: at /app/.next/dist/bundles/pages/_document.js:70:18
2018-02-15T19:57:06.616465+00:00 app[web.1]: at Object.<anonymous> (/app/.next/dist/bundles/pages/_document.js:73:10) code: 'MODULE_NOT_FOUND' }
2018-02-15T19:57:06.623908+00:00 app[web.1]: { Error: Cannot find module '/tmp/build_9ecf90c5383be7151436c12b01c561e1/node_modules/next/dist/pages/_error.js'
2018-02-15T19:57:06.623910+00:00 app[web.1]: at Function.Module._resolveFilename (module.js:476:15)
2018-02-15T19:57:06.623911+00:00 app[web.1]: at Function.Module._load (module.js:424:25)
2018-02-15T19:57:06.623912+00:00 app[web.1]: at Module.require (module.js:504:17)
2018-02-15T19:57:06.623914+00:00 app[web.1]: at require (internal/module.js:20:19)
2018-02-15T19:57:06.623915+00:00 app[web.1]: at Object.185 (/app/.next/dist/bundles/pages/_error.js:86:18)
2018-02-15T19:57:06.623916+00:00 app[web.1]: at __webpack_require__ (/app/.next/dist/bundles/pages/_error.js:23:31)
2018-02-15T19:57:06.623917+00:00 app[web.1]: at Object.184 (/app/.next/dist/bundles/pages/_error.js:78:18)
2018-02-15T19:57:06.623919+00:00 app[web.1]: at __webpack_require__ (/app/.next/dist/bundles/pages/_error.js:23:31)
2018-02-15T19:57:06.623920+00:00 app[web.1]: at /app/.next/dist/bundles/pages/_error.js:70:18
2018-02-15T19:57:06.623921+00:00 app[web.1]: at Object.<anonymous> (/app/.next/dist/bundles/pages/_error.js:73:10) code: 'MODULE_NOT_FOUND' }
@craigcartmell ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์ ์๋ํ์ต๋๋ค.
"์ต์์" ์๋ฃจ์ ์ด ์๋ ๊ฒ ๊ฐ์ง๋ง ๋น ๋ฅธ ์์ ์ผ๋ก ์๋ฒฝํ๊ฒ ๋ง์ต๋๋ค.
๊ฐ์ฌ ํด์.
"scripts": {
"prestart": "next build",
"start": "next start -p ${PORT}",
}
์์ @dotcypress ์ ์๋ฃจ์
์ ํตํด ๋ง์นจ๋ด ์ต์ํ ๋ด ํ ํ์ด์ง๋ฅผ ๋ก๋ํ ์ ์์์ง๋ง '/' ์ด์ธ์ ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์ด๋ํ๋ฉด ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ํ์ผ์ ์ ๋ก๋ํ ์ ์๋ ๊ฒ ๊ฐ์ง๋ง ๊ฒฝ๋ก์ 500 ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๊น?
์, ์ด๊ฒ์ ๋ค์ 5์ ์ฌ์ ํ ์กด์ฌํ๊ฑฐ๋ ๋ค์ ๋ํ๋ ์ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ๋ค์ ์ด์ด์ผ ํฉ๋๋ค. ๋๋ typescript๋ฅผ ๋ณํํ๊ณ ์์ง๋ง awesome-ts-loader
๋๋ normal next-typescript
๋ฅผ ์ฌ์ฉํ๋์ง ์ฌ๋ถ๋ ์ค์ํ์ง ์์ต๋๋ค. heroku-postbuild
๋๋ postinstall
๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ํ๋ฉด ์ ๋์ ์ผ๋ก ๋ฒ ์ดํน๋ฉ๋๋ค. ๊ฒฝ๋ก. ์ด๋ฒ ํธ๋ ์ฒซ ๊ตฌ๊ธ ๊ฒ์ ๊ฒฐ๊ณผ์ด๊ธฐ๋ ํ๋ค. prestart
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์์งํ ์๋ฃจ์
์
๋๋ค. ์ค๊ฐ ํฌ๊ธฐ์ ์ฑ๋ ์์ ์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์
๋๋ค...
2018-03-19T12:03:31.030588+00:00 app[web.1]: { Error: Cannot find module '/tmp/build_c20f3b76f6bee76686e9fc44cf4184d1/app-name-25af881616238ff70d6efecd625937324fb80679/node_modules/next/dist/pages/_error.js'
2018-03-19T12:03:31.030600+00:00 app[web.1]: at Function.Module._resolveFilename (module.js:543:15)
2018-03-19T12:03:31.030602+00:00 app[web.1]: at Function.Module._load (module.js:470:25)
2018-03-19T12:03:31.030603+00:00 app[web.1]: at Module.require (module.js:593:17)
2018-03-19T12:03:31.030604+00:00 app[web.1]: at require (internal/module.js:11:18)
2018-03-19T12:03:31.030606+00:00 app[web.1]: at Object.36 (/app/.next/dist/bundles/pages/_error.js:86:18)
2018-03-19T12:03:31.030608+00:00 app[web.1]: at __webpack_require__ (/app/.next/dist/bundles/pages/_error.js:23:31)
2018-03-19T12:03:31.030609+00:00 app[web.1]: at Object.35 (/app/.next/dist/bundles/pages/_error.js:78:18)
2018-03-19T12:03:31.030611+00:00 app[web.1]: at __webpack_require__ (/app/.next/dist/bundles/pages/_error.js:23:31)
2018-03-19T12:03:31.030612+00:00 app[web.1]: at /app/.next/dist/bundles/pages/_error.js:70:18
2018-03-19T12:03:31.030614+00:00 app[web.1]: at Object.<anonymous> (/app/.next/dist/bundles/pages/_error.js:73:10) code: 'MODULE_NOT_FOUND' }
๊ณ ์ณค๋ค! ๋ฐฉ๊ธ @mars/heroku-nextjs-build
์ถ๊ฐํ๊ณ "postbuild": "heroku-nextjs-build"
์ค์ ํ์ต๋๋ค. ๋ถ๋ช
ํ ์ด๊ฒ์ ์ค๋๋๊ณ ๊ตฌ์์ด๋ฉฐ ํ์ํ์ง ์์ ๋ฐฉ๋ฒ์ด์ง๋ง ๋ค๋ฅธ ์ ์ ๊ฐ์ฒญํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ์ผ๋ถ ์ํ. ๋ค์์ ์ค์ ๋ก ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ๋๋จธ์ง ์ฃผ์์ ๋จ๊ฒจ๋ก๋๋ค.
๋ด ์ฑ์ next@4๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ฐฐํฌ๋ฉ๋๋ค. next@5 ๋ก ์
๊ทธ๋ ์ด๋ํ๋ฉด Cannot find module
์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ง๊ธ next@canary
๋ก ์
๊ทธ๋ ์ด๋ํ์ธ์. ๊ณง ์๋ก์ด ์์ ์ ์ธ ๋ฆด๋ฆฌ์ค๊ฐ ๋์ฌ ๊ฒ์
๋๋ค ๐
์ฌ๋ฌ๋ถ, ์๋
ํ์ธ์,
heroku์ ๋ฐฐํฌํ๋ ๋์ ๋ช ๊ฐ์ง ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค. ์์ ํ ๋น๋ ํ heroku ๋ก๊ทธ์ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค. ๋์์ฃผ์ธ์.
2018-08-02T11:37:50.384799+00:00 heroku[web.1]: npm start
๋ช
๋ น์ผ๋ก ํ๋ก์ธ์ค ์์
2018-08-02T11:37:52.479778+00:00 ์ฑ[web.1]:
2018-08-02T11:37:52.479800+00:00 ์ฑ[web.1]: > [email protected] ์์/์ฑ
2018-08-02T11:37:52.479802+00:00 app[web.1]: > cross-env NODE_ENV=๊ฐ๋ฐ ๋
ธ๋ ์๋ฒ
2018-08-02T11:37:52.479804+00:00 ์ฑ[web.1]:
2018-08-02T11:37:52.830037+00:00 ์ฑ[web.1]: internal/modules/cjs/loader.js:583
2018-08-02T11:37:52.830072+00:00 ์ฑ[web.1]: ์ค๋ฅ ๋ฐ์;
2018-08-02T11:37:52.830074+00:00 ์ฑ[web.1]: ^
2018-08-02T11:37:52.830076+00:00 ์ฑ[web.1]:
2018-08-02T11:37:52.830079+00:00 app[web.1]: ์ค๋ฅ: 'webpack' ๋ชจ๋์ ์ฐพ์ ์ ์์ต๋๋ค.
2018-08-02T11:37:52.830081+00:00 app[web.1]: Function.Module._resolveFilename์์ (internal/modules/cjs/loader.js:581:15)
2018-08-02T11:37:52.830083+00:00 app[web.1]: Function.Module._load์์ (internal/modules/cjs/loader.js:507:25)
2018-08-02T11:37:52.830085+00:00 app[web.1]: Module.require์์ (internal/modules/cjs/loader.js:637:17)
2018-08-02T11:37:52.830087+00:00 app[web.1]: ํ์ ์ (internal/modules/cjs/helpers.js:20:18)
2018-08-02T11:37:52.830089+00:00 app[web.1]: ๊ฐ์ฒด์์.
2018-08-02T11:37:52.830091+00:00 app[web.1]: Module._compile์์ (internal/modules/cjs/loader.js:689:30)
2018-08-02T11:37:52.830092+00:00 app[web.1]: Object.Module._extensions..js์์ (internal/modules/cjs/loader.js:700:10)
2018-08-02T11:37:52.830095+00:00 app[web.1]: Module.load์์ (internal/modules/cjs/loader.js:599:32)
2018-08-02T11:37:52.830097+00:00 app[web.1]: tryModuleLoad์์ (internal/modules/cjs/loader.js:538:12)
2018-08-02T11:37:52.830098+00:00 app[web.1]: Function.Module._load์์ (internal/modules/cjs/loader.js:530:3)
2018-08-02T11:37:52.841737+00:00 app[web.1]: npm ERR! ์ฝ๋ ELIFECYCLE
2018-08-02T11:37:52.842251+00:00 app[web.1]: npm ERR! ์ค๋ฅ ๋ฒํธ 1
2018-08-02T11:37:52.847589+00:00 ์ฑ[web.1]: npm ์ค๋ฅ! [email protected] ์์: cross-env NODE_ENV=development node server
2018-08-02T11:37:52.847598+00:00 ์ฑ[web.1]: npm ์ค๋ฅ! ์ข
๋ฃ ์ํ 1
2018-08-02T11:37:52.847601+00:00 app[web.1]: npm ERR!
2018-08-02T11:37:52.847604+00:00 app[web.1]: npm ERR! [email protected] ์์ ์คํฌ๋ฆฝํธ์์ ์คํจํ์ต๋๋ค.
2018-08-02T11:37:52.847606+00:00 ์ฑ[web.1]: npm ์ค๋ฅ! ์ด๊ฒ์ ์๋ง๋ npm์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์
๋๋ค. ์์ ์ถ๊ฐ ๋ก๊น
์ถ๋ ฅ์ด ์์ ์ ์์ต๋๋ค.
2018-08-02T11:37:52.852427+00:00 ์ฑ[web.1]:
2018-08-02T11:37:52.853063+00:00 ์ฑ[web.1]: npm ์ค๋ฅ! ์ด ์คํ์ ์ ์ฒด ๋ก๊ทธ๋ ๋ค์์์ ์ฐพ์ ์ ์์ต๋๋ค.
2018-08-02T11:37:52.853067+00:00 app[web.1]: npm ERR! /app/.npm/_logs/2018-08-02T11_37_52_846Z-debug.log
2018-08-02T11:37:52.936888+00:00 heroku[web.1]: ์ํ๊ฐ ์์์์ ์ถฉ๋๋ก ๋ณ๊ฒฝ๋จ
2018-08-02T11:37:52.939706+00:00 heroku[web.1]: ์ํ๊ฐ ์ถฉ๋์์ ์์์ผ๋ก ๋ณ๊ฒฝ๋จ
2018-08-02T11:37:52.917875+00:00 heroku[web.1]: ํ๋ก์ธ์ค๊ฐ ์ํ 1๋ก ์ข
๋ฃ๋จ
2018-08-02T11:37:56.000000+00:00 app[api]: ๋น๋ ์ฑ๊ณต
2018-08-02T11:37:58.666367+00:00 heroku[web.1]: npm start
๋ช
๋ น์ผ๋ก ํ๋ก์ธ์ค ์์
2018-08-02T11:38:01.987224+00:00 ์ฑ[web.1]:
2018-08-02T11:38:01.987249+00:00 ์ฑ[web.1]: > [email protected] ์์ / ์ฑ
2018-08-02T11:38:01.987252+00:00 app[web.1]: > cross-env NODE_ENV=๊ฐ๋ฐ ๋
ธ๋ ์๋ฒ
2018-08-02T11:38:01.987253+00:00 ์ฑ[web.1]:
2018-08-02T11:38:02.431047+00:00 ์ฑ[web.1]: internal/modules/cjs/loader.js:583
2018-08-02T11:38:02.431072+00:00 app[web.1]: ์ค๋ฅ๋ฅผ ๋์ง;
2018-08-02T11:38:02.431073+00:00 ์ฑ[web.1]: ^
2018-08-02T11:38:02.431075+00:00 ์ฑ[web.1]:
2018-08-02T11:38:02.431076+00:00 app[web.1]: ์ค๋ฅ: 'webpack' ๋ชจ๋์ ์ฐพ์ ์ ์์ต๋๋ค.
2018-08-02T11:38:02.431078+00:00 app[web.1]: Function.Module._resolveFilename์์ (internal/modules/cjs/loader.js:581:15)
2018-08-02T11:38:02.431079+00:00 app[web.1]: Function.Module._load์์ (internal/modules/cjs/loader.js:507:25)
2018-08-02T11:38:02.431081+00:00 app[web.1]: Module.require์์ (internal/modules/cjs/loader.js:637:17)
2018-08-02T11:38:02.431082+00:00 app[web.1]: ํ์ ์(internal/modules/cjs/helpers.js:20:18)
2018-08-02T11:38:02.431084+00:00 app[web.1]: ๊ฐ์ฒด์์.
2018-08-02T11:38:02.431085+00:00 app[web.1]: Module._compile์์ (internal/modules/cjs/loader.js:689:30)
2018-08-02T11:38:02.431086+00:00 app[web.1]: Object.Module._extensions..js์์ (internal/modules/cjs/loader.js:700:10)
2018-08-02T11:38:02.431088+00:00 app[web.1]: Module.load์์ (internal/modules/cjs/loader.js:599:32)
2018-08-02T11:38:02.431089+00:00 app[web.1]: tryModuleLoad์์ (internal/modules/cjs/loader.js:538:12)
2018-08-02T11:38:02.431091+00:00 app[web.1]: Function.Module._load์์ (internal/modules/cjs/loader.js:530:3)
2018-08-02T11:38:02.440582+00:00 app[web.1]: npm ERR! ์ฝ๋ ELIFECYCLE
2018-08-02T11:38:02.441020+00:00 app[web.1]: npm ERR! ์ค๋ฅ ๋ฒํธ 1
2018-08-02T11:38:02.442131+00:00 app[web.1]: npm ERR! [email protected] ์์: cross-env NODE_ENV=development node server
2018-08-02T11:38:02.442285+00:00 app[web.1]: npm ERR! ์ข
๋ฃ ์ํ 1
2018-08-02T11:38:02.442519+00:00 ์ฑ[web.1]: npm ์ค๋ฅ!
2018-08-02T11:38:02.442686+00:00 ์ฑ[web.1]: npm ์ค๋ฅ! [email protected] ์์ ์คํฌ๋ฆฝํธ์์ ์คํจํ์ต๋๋ค.
2018-08-02T11:38:02.442843+00:00 app[web.1]: npm ERR! ์ด๊ฒ์ ์๋ง๋ npm์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์
๋๋ค. ์์ ์ถ๊ฐ ๋ก๊น
์ถ๋ ฅ์ด ์์ ์ ์์ต๋๋ค.
2018-08-02T11:38:02.447318+00:00 ์ฑ[web.1]:
2018-08-02T11:38:02.447457+00:00 ์ฑ[web.1]: npm ์ค๋ฅ! ์ด ์คํ์ ์ ์ฒด ๋ก๊ทธ๋ ๋ค์์์ ์ฐพ์ ์ ์์ต๋๋ค.
2018-08-02T11:38:02.447542+00:00 ์ฑ[web.1]: npm ์ค๋ฅ! /app/.npm/_logs/2018-08-02T11_38_02_444Z-debug.log
2018-08-02T11:38:02.500683+00:00 heroku[web.1]: ํ๋ก์ธ์ค๊ฐ ์ํ 1๋ก ์ข
๋ฃ๋จ
2018-08-02T11:38:02.521430+00:00 heroku[web.1]: ์ํ๊ฐ ์์์์ ์ถฉ๋๋ก ๋ณ๊ฒฝ๋จ
2018-08-02T11:38:06.378583+00:00 heroku[๋ผ์ฐํฐ]: at=์ค๋ฅ ์ฝ๋=H10 desc="์ฑ ์ถฉ๋" ๋ฐฉ๋ฒ=GET ๊ฒฝ๋ก="/" host=react-boilerplate-d.herokuapp.com request_id =0628c426-9466-4c9d-a38c-22e8923cc981 fwd="111.93.125.106" dyno= ์ฐ๊ฒฐ= ์๋น์ค= ์ํ=503 ๋ฐ์ดํธ= ํ๋กํ ์ฝ=https
2018-08-02T11:38:07.848705+00:00 heroku[๋ผ์ฐํฐ]: at=์ค๋ฅ ์ฝ๋=H10 desc="์ฑ ์ถฉ๋" ๋ฐฉ๋ฒ=GET ๊ฒฝ๋ก="/favicon.ico" host=react-boilerplate-d.herokuapp .com request_id=28182669-14d4-4ce1-8274-09c0db1b4aba fwd="111.93.125.106" dyno= connect= service= status=503 bytes= protocol=https
์ฌ๋ฌ๋ถ, ์๋
ํ์ธ์,
heroku์ ๋ฐฐํฌํ๋ ๋์ ๋ช ๊ฐ์ง ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค. ์์ ํ ๋น๋ ํ heroku ๋ก๊ทธ์ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค. ๋์์ฃผ์ธ์.
2018-08-02T11:37:50.384799+00:00 heroku[web.1]: npm start
๋ช
๋ น์ผ๋ก ํ๋ก์ธ์ค ์์
2018-08-02T11:37:52.479778+00:00 ์ฑ[web.1]:
2018-08-02T11:37:52.479800+00:00 ์ฑ[web.1]: > [email protected] ์์/์ฑ
2018-08-02T11:37:52.479802+00:00 app[web.1]: > cross-env NODE_ENV=๊ฐ๋ฐ ๋
ธ๋ ์๋ฒ
2018-08-02T11:37:52.479804+00:00 ์ฑ[web.1]:
2018-08-02T11:37:52.830037+00:00 ์ฑ[web.1]: internal/modules/cjs/loader.js:583
2018-08-02T11:37:52.830072+00:00 ์ฑ[web.1]: ์ค๋ฅ ๋ฐ์;
2018-08-02T11:37:52.830074+00:00 ์ฑ[web.1]: ^
2018-08-02T11:37:52.830076+00:00 ์ฑ[web.1]:
2018-08-02T11:37:52.830079+00:00 app[web.1]: ์ค๋ฅ: 'webpack' ๋ชจ๋์ ์ฐพ์ ์ ์์ต๋๋ค.
2018-08-02T11:37:52.830081+00:00 app[web.1]: Function.Module._resolveFilename์์ (internal/modules/cjs/loader.js:581:15)
2018-08-02T11:37:52.830083+00:00 app[web.1]: Function.Module._load์์ (internal/modules/cjs/loader.js:507:25)
2018-08-02T11:37:52.830085+00:00 app[web.1]: Module.require์์ (internal/modules/cjs/loader.js:637:17)
2018-08-02T11:37:52.830087+00:00 app[web.1]: ํ์ ์ (internal/modules/cjs/helpers.js:20:18)
2018-08-02T11:37:52.830089+00:00 app[web.1]: ๊ฐ์ฒด์์.
2018-08-02T11:37:52.830091+00:00 app[web.1]: Module._compile์์ (internal/modules/cjs/loader.js:689:30)
2018-08-02T11:37:52.830092+00:00 app[web.1]: Object.Module._extensions..js์์ (internal/modules/cjs/loader.js:700:10)
2018-08-02T11:37:52.830095+00:00 app[web.1]: Module.load์์ (internal/modules/cjs/loader.js:599:32)
2018-08-02T11:37:52.830097+00:00 app[web.1]: tryModuleLoad์์ (internal/modules/cjs/loader.js:538:12)
2018-08-02T11:37:52.830098+00:00 app[web.1]: Function.Module._load์์ (internal/modules/cjs/loader.js:530:3)
2018-08-02T11:37:52.841737+00:00 app[web.1]: npm ERR! ์ฝ๋ ELIFECYCLE
2018-08-02T11:37:52.842251+00:00 app[web.1]: npm ERR! ์ค๋ฅ ๋ฒํธ 1
2018-08-02T11:37:52.847589+00:00 ์ฑ[web.1]: npm ์ค๋ฅ! [email protected] ์์: cross-env NODE_ENV=development node server
2018-08-02T11:37:52.847598+00:00 ์ฑ[web.1]: npm ์ค๋ฅ! ์ข
๋ฃ ์ํ 1
2018-08-02T11:37:52.847601+00:00 app[web.1]: npm ERR!
2018-08-02T11:37:52.847604+00:00 app[web.1]: npm ERR! [email protected] ์์ ์คํฌ๋ฆฝํธ์์ ์คํจํ์ต๋๋ค.
2018-08-02T11:37:52.847606+00:00 ์ฑ[web.1]: npm ์ค๋ฅ! ์ด๊ฒ์ ์๋ง๋ npm์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์
๋๋ค. ์์ ์ถ๊ฐ ๋ก๊น
์ถ๋ ฅ์ด ์์ ์ ์์ต๋๋ค.
2018-08-02T11:37:52.852427+00:00 ์ฑ[web.1]:
2018-08-02T11:37:52.853063+00:00 ์ฑ[web.1]: npm ์ค๋ฅ! ์ด ์คํ์ ์ ์ฒด ๋ก๊ทธ๋ ๋ค์์์ ์ฐพ์ ์ ์์ต๋๋ค.
2018-08-02T11:37:52.853067+00:00 app[web.1]: npm ERR! /app/.npm/_logs/2018-08-02T11_37_52_846Z-debug.log
2018-08-02T11:37:52.936888+00:00 heroku[web.1]: ์ํ๊ฐ ์์์์ ์ถฉ๋๋ก ๋ณ๊ฒฝ๋จ
2018-08-02T11:37:52.939706+00:00 heroku[web.1]: ์ํ๊ฐ ์ถฉ๋์์ ์์์ผ๋ก ๋ณ๊ฒฝ๋จ
2018-08-02T11:37:52.917875+00:00 heroku[web.1]: ํ๋ก์ธ์ค๊ฐ ์ํ 1๋ก ์ข
๋ฃ๋จ
2018-08-02T11:37:56.000000+00:00 app[api]: ๋น๋ ์ฑ๊ณต
2018-08-02T11:37:58.666367+00:00 heroku[web.1]: npm start
๋ช
๋ น์ผ๋ก ํ๋ก์ธ์ค ์์
2018-08-02T11:38:01.987224+00:00 ์ฑ[web.1]:
2018-08-02T11:38:01.987249+00:00 ์ฑ[web.1]: > [email protected] ์์ / ์ฑ
2018-08-02T11:38:01.987252+00:00 app[web.1]: > cross-env NODE_ENV=๊ฐ๋ฐ ๋
ธ๋ ์๋ฒ
2018-08-02T11:38:01.987253+00:00 ์ฑ[web.1]:
2018-08-02T11:38:02.431047+00:00 ์ฑ[web.1]: internal/modules/cjs/loader.js:583
2018-08-02T11:38:02.431072+00:00 app[web.1]: ์ค๋ฅ๋ฅผ ๋์ง;
2018-08-02T11:38:02.431073+00:00 ์ฑ[web.1]: ^
2018-08-02T11:38:02.431075+00:00 ์ฑ[web.1]:
2018-08-02T11:38:02.431076+00:00 app[web.1]: ์ค๋ฅ: 'webpack' ๋ชจ๋์ ์ฐพ์ ์ ์์ต๋๋ค.
2018-08-02T11:38:02.431078+00:00 app[web.1]: Function.Module._resolveFilename์์ (internal/modules/cjs/loader.js:581:15)
2018-08-02T11:38:02.431079+00:00 app[web.1]: Function.Module._load์์ (internal/modules/cjs/loader.js:507:25)
2018-08-02T11:38:02.431081+00:00 app[web.1]: Module.require์์ (internal/modules/cjs/loader.js:637:17)
2018-08-02T11:38:02.431082+00:00 app[web.1]: ํ์ ์(internal/modules/cjs/helpers.js:20:18)
2018-08-02T11:38:02.431084+00:00 app[web.1]: ๊ฐ์ฒด์์.
2018-08-02T11:38:02.431085+00:00 app[web.1]: Module._compile์์ (internal/modules/cjs/loader.js:689:30)
2018-08-02T11:38:02.431086+00:00 app[web.1]: Object.Module._extensions..js์์ (internal/modules/cjs/loader.js:700:10)
2018-08-02T11:38:02.431088+00:00 app[web.1]: Module.load์์ (internal/modules/cjs/loader.js:599:32)
2018-08-02T11:38:02.431089+00:00 app[web.1]: tryModuleLoad์์ (internal/modules/cjs/loader.js:538:12)
2018-08-02T11:38:02.431091+00:00 app[web.1]: Function.Module._load์์ (internal/modules/cjs/loader.js:530:3)
2018-08-02T11:38:02.440582+00:00 app[web.1]: npm ERR! ์ฝ๋ ELIFECYCLE
2018-08-02T11:38:02.441020+00:00 app[web.1]: npm ERR! ์ค๋ฅ ๋ฒํธ 1
2018-08-02T11:38:02.442131+00:00 app[web.1]: npm ERR! [email protected] ์์: cross-env NODE_ENV=development node server
2018-08-02T11:38:02.442285+00:00 app[web.1]: npm ERR! ์ข
๋ฃ ์ํ 1
2018-08-02T11:38:02.442519+00:00 ์ฑ[web.1]: npm ์ค๋ฅ!
2018-08-02T11:38:02.442686+00:00 ์ฑ[web.1]: npm ์ค๋ฅ! [email protected] ์์ ์คํฌ๋ฆฝํธ์์ ์คํจํ์ต๋๋ค.
2018-08-02T11:38:02.442843+00:00 app[web.1]: npm ERR! ์ด๊ฒ์ ์๋ง๋ npm์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์
๋๋ค. ์์ ์ถ๊ฐ ๋ก๊น
์ถ๋ ฅ์ด ์์ ์ ์์ต๋๋ค.
2018-08-02T11:38:02.447318+00:00 ์ฑ[web.1]:
2018-08-02T11:38:02.447457+00:00 ์ฑ[web.1]: npm ์ค๋ฅ! ์ด ์คํ์ ์ ์ฒด ๋ก๊ทธ๋ ๋ค์์์ ์ฐพ์ ์ ์์ต๋๋ค.
2018-08-02T11:38:02.447542+00:00 ์ฑ[web.1]: npm ์ค๋ฅ! /app/.npm/_logs/2018-08-02T11_38_02_444Z-debug.log
2018-08-02T11:38:02.500683+00:00 heroku[web.1]: ํ๋ก์ธ์ค๊ฐ ์ํ 1๋ก ์ข
๋ฃ๋จ
2018-08-02T11:38:02.521430+00:00 heroku[web.1]: ์ํ๊ฐ ์์์์ ์ถฉ๋๋ก ๋ณ๊ฒฝ๋จ
2018-08-02T11:38:06.378583+00:00 heroku[๋ผ์ฐํฐ]: at=์ค๋ฅ ์ฝ๋=H10 desc="์ฑ ์ถฉ๋" ๋ฐฉ๋ฒ=GET ๊ฒฝ๋ก="/" host=react-boilerplate-d.herokuapp.com request_id =0628c426-9466-4c9d-a38c-22e8923cc981 fwd="111.93.125.106" dyno= ์ฐ๊ฒฐ= ์๋น์ค= ์ํ=503 ๋ฐ์ดํธ= ํ๋กํ ์ฝ=https
2018-08-02T11:38:07.848705+00:00 heroku[๋ผ์ฐํฐ]: at=์ค๋ฅ ์ฝ๋=H10 desc="์ฑ ์ถฉ๋" ๋ฐฉ๋ฒ=GET ๊ฒฝ๋ก="/favicon.ico" host=react-boilerplate-d.herokuapp .com request_id=28182669-14d4-4ce1-8274-09c0db1b4aba fwd="111.93.125.106" dyno= connect= service= status=503 bytes= protocol=https
๋๋ ๋น์ ๋ชจ๋์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋ก์ปฌ์์๋ ์๋ํ์ง๋ง heroku ๋๋ NOW์ ์๋ ๋์ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ทธ๊ฒ์ ๊ณ ์น๋ ๋ฐฉ๋ฒ? ๋๋ ์ด๋์ ๋ฐฐํฌํ ์ ์์ต๋๊น?
๋ชจ๋ ์๋ ,
Next v8์์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ค์์ ๋ด๊ฐ ์ค์ ํ ๋ด์ฉ์ ๋๋ค.
๋น๋๋ฅผ ์์๋๋ก ์คํํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ ์๋ํ์ต๋๋ค.
๋ด๊ฐ ๋ฌด์์ ํ๋ ์ง - ์ฌ๊ธฐ์ ๋ด๊ฐ ์ป์ ๋ก๊ทธ์์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์์ ์์๋๋ ์ฐจ์ด๋ฅผ ๋บ ๊ฐ์ด ์์ต๋๋ค.
-----> Node.js app detected
-----> Creating runtime environment
NPM_CONFIG_LOGLEVEL=error
NODE_ENV=production
NODE_MODULES_CACHE=true
NODE_VERBOSE=false
-----> Installing binaries
engines.node (package.json): 10.15.0
engines.npm (package.json): 6.8.0
Resolving node version 10.15.0...
Downloading and installing node 10.15.0...
Bootstrapping npm 6.8.0 (replacing 6.4.1)...
npm 6.8.0 installed
-----> Restoring cache
- node_modules is checked into source control and cannot be cached
-----> Building dependencies
Prebuild detected (node_modules already exists)
Rebuilding any native modules
> [email protected] install /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents
> node install
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/next
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/core
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/code-frame
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/highlight
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/chalk
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/ansi-styles
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/color-convert
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/color-name
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/escape-string-regexp
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/supports-color
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/has-flag
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/esutils
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/js-tokens
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/generator
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/types
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/lodash
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/to-fast-properties
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/jsesc
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/source-map
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/trim-right
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helpers
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/template
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/parser
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/traverse
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-function-name
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-get-function-arity
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-split-export-declaration
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/traverse/node_modules/debug
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/ms
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/globals
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/convert-source-map
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/safe-buffer
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/debug
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/json5
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/resolve
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/path-parse
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/semver
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-proposal-class-properties
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-member-expression-to-functions
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-optimise-call-expression
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-plugin-utils
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-replace-supers
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-syntax-class-properties
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-proposal-object-rest-spread
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-syntax-object-rest-spread
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-syntax-dynamic-import
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-modules-commonjs
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-module-transforms
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-module-imports
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-simple-access
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-module-transforms/node_modules/@babel/template
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-runtime
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-runtime/node_modules/resolve
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/preset-env
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-proposal-async-generator-functions
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-remap-async-to-generator
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-annotate-as-pure
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-wrap-function
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-syntax-async-generators
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-proposal-json-strings
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-syntax-json-strings
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-proposal-optional-catch-binding
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-syntax-optional-catch-binding
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-proposal-unicode-property-regex
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-regex
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/regexpu-core
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/regenerate
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/regenerate-unicode-properties
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/regjsgen
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/regjsparser
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/regjsparser/node_modules/jsesc
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/unicode-match-property-ecmascript
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/unicode-canonical-property-names-ecmascript
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/unicode-property-aliases-ecmascript
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/unicode-match-property-value-ecmascript
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-arrow-functions
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-async-to-generator
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-block-scoped-functions
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-block-scoping
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-classes
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-define-map
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-computed-properties
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-destructuring
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-dotall-regex
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-duplicate-keys
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-exponentiation-operator
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-builder-binary-assignment-operator-visitor
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-explode-assignable-expression
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-for-of
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-function-name
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-literals
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-modules-amd
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-modules-systemjs
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-hoist-variables
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-modules-umd
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-new-target
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-object-super
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-parameters
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-call-delegate
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-regenerator
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/regenerator-transform
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/private
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-shorthand-properties
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-spread
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-sticky-regex
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-template-literals
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-typeof-symbol
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-unicode-regex
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/browserslist
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/caniuse-lite
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/electron-to-chromium
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/node-releases
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/invariant
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/loose-envify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/js-levenshtein
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/preset-react
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-react-display-name
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-react-jsx
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/helper-builder-react-jsx
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-syntax-jsx
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-react-jsx-self
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/plugin-transform-react-jsx-source
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/runtime
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/regenerator-runtime
@babel/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@babel/runtime-corejs2
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/core-js
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/autodll-webpack-plugin
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/bluebird
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/del
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/globby
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/array-union
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/array-uniq
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/glob
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fs.realpath
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/inflight
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/once
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/wrappy
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/inherits
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/minimatch
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/brace-expansion
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/balanced-match
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/concat-map
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/path-is-absolute
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/object-assign
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/globby/node_modules/pify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/pinkie-promise
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/pinkie
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-path-cwd
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-path-in-cwd
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-path-inside
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/path-is-inside
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/p-map
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/pify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/rimraf
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/rimraf/node_modules/glob
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/find-cache-dir
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/commondir
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/make-dir
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/pkg-dir
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/find-up
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/locate-path
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/p-locate
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/p-limit
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/p-try
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/path-exists
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/memory-fs
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/errno
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/prr
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/readable-stream
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/core-util-is
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/isarray
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/process-nextick-args
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/string_decoder
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/util-deprecate
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/read-pkg
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/load-json-file
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/graceful-fs
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/parse-json
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/error-ex
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-arrayish
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/load-json-file/node_modules/pify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/strip-bom
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/normalize-package-data
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/hosted-git-info
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/validate-npm-package-license
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/spdx-correct
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/spdx-expression-parse
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/spdx-exceptions
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/spdx-license-ids
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/path-type
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/path-type/node_modules/pify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/tapable
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/webpack-merge
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/webpack-sources
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/source-list-map
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/babel-core
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/babel-loader
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/loader-utils
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/big.js
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/emojis-list
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/mkdirp
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/minimist
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/util.promisify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/define-properties
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/object-keys
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/object.getownpropertydescriptors
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/es-abstract
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/es-to-primitive
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-callable
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-date-object
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-symbol
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/has-symbols
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/function-bind
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/has
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-regex
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/babel-plugin-react-require
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/babel-plugin-transform-react-remove-prop-types
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/cacache
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/chownr
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/figgy-pudding
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/cacache/node_modules/glob
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/lru-cache
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/yallist
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/mississippi
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/concat-stream
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/buffer-from
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/typedarray
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/duplexify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/end-of-stream
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/stream-shift
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/flush-write-stream
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/from2
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/parallel-transform
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/cyclist
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/pump
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/pumpify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/pumpify/node_modules/pump
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/stream-each
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/through2
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/xtend
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/move-concurrently
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/aproba
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/copy-concurrently
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fs-write-stream-atomic
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/iferr
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/imurmurhash
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/run-queue
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/promise-inflight
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/ssri
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/unique-filename
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/unique-slug
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/y18n
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/case-sensitive-paths-webpack-plugin
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/cross-spawn
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/shebang-command
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/shebang-regex
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/which
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/isexe
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/event-source-polyfill
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fresh
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/hoist-non-react-statics
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/http-status
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/launch-editor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/shell-quote
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/array-filter
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/array-map
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/array-reduce
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/jsonify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/mkdirp-then
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/any-promise
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/nanoid
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/prop-types
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/prop-types-exact
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/object.assign
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/reflect.ownkeys
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/react-error-overlay
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/recursive-copy
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/recursive-copy/node_modules/del
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/recursive-copy/node_modules/globby
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/arrify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/recursive-copy/node_modules/pify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/emitter-mixin
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/junk
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/maximatch
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/array-differ
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/promise
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/asap
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/slash
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/schema-utils
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/ajv
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fast-deep-equal
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fast-json-stable-stringify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/json-schema-traverse
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/uri-js
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/punycode
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/ajv-errors
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/ajv-keywords
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/serialize-javascript
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/strip-ansi
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/ansi-regex
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/styled-jsx
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/babel-plugin-syntax-jsx
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/babel-types
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/babel-runtime
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/babel-runtime/node_modules/regenerator-runtime
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/babel-types/node_modules/to-fast-properties
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/styled-jsx/node_modules/source-map
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/string-hash
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/stylis
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/stylis-rule-sheet
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/terser
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/commander
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/source-map-support
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/unfetch
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/url
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/querystring
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/webpack
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/ast
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/helper-module-context
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/helper-wasm-bytecode
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/wast-parser
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/floating-point-hex-parser
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/helper-api-error
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/helper-code-frame
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/wast-printer
@xtuc/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@xtuc/long
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/helper-fsm
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/wasm-edit
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/helper-buffer
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/helper-wasm-section
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/wasm-gen
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/ieee754
@xtuc/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@xtuc/ieee754
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/leb128
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/utf8
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/wasm-opt
@webassemblyjs/[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/@webassemblyjs/wasm-parser
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/acorn
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/acorn-dynamic-import
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/chrome-trace-event
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/tslib
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/enhanced-resolve
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/eslint-scope
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/esrecurse
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/estraverse
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/json-parse-better-errors
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/loader-runner
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/micromatch
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/arr-diff
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/array-unique
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/braces
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/arr-flatten
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/braces/node_modules/extend-shallow
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-extendable
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fill-range
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fill-range/node_modules/extend-shallow
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-number
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-number/node_modules/kind-of
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-buffer
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/repeat-string
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/to-regex-range
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/isobject
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/repeat-element
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/snapdragon
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/base
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/cache-base
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/collection-visit
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/map-visit
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/object-visit
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/component-emitter
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/get-value
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/has-value
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/has-values
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/has-values/node_modules/kind-of
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/set-value
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/set-value/node_modules/extend-shallow
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-plain-object
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/split-string
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/extend-shallow
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/assign-symbols
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/extend-shallow/node_modules/is-extendable
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/to-object-path
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/to-object-path/node_modules/kind-of
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/union-value
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/arr-union
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/union-value/node_modules/set-value
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/union-value/node_modules/extend-shallow
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/unset-value
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/unset-value/node_modules/has-value
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/unset-value/node_modules/has-values
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/unset-value/node_modules/has-value/node_modules/isobject
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/class-utils
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/class-utils/node_modules/define-property
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-descriptor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-accessor-descriptor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-accessor-descriptor/node_modules/kind-of
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-data-descriptor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-data-descriptor/node_modules/kind-of
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-descriptor/node_modules/kind-of
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/static-extend
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/static-extend/node_modules/define-property
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/object-copy
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/copy-descriptor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/object-copy/node_modules/define-property
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/object-copy/node_modules/kind-of
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/base/node_modules/define-property
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/base/node_modules/is-descriptor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/base/node_modules/is-accessor-descriptor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/kind-of
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/base/node_modules/is-data-descriptor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/mixin-deep
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/for-in
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/mixin-deep/node_modules/is-extendable
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/pascalcase
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/snapdragon/node_modules/debug
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/snapdragon/node_modules/ms
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/snapdragon/node_modules/define-property
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/snapdragon/node_modules/extend-shallow
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/map-cache
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/source-map-resolve
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/atob
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/decode-uri-component
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/resolve-url
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/source-map-url
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/urix
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/use
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/snapdragon-node
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/snapdragon-node/node_modules/define-property
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/snapdragon-node/node_modules/is-descriptor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/snapdragon-node/node_modules/is-accessor-descriptor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/snapdragon-node/node_modules/is-data-descriptor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/snapdragon-util
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/snapdragon-util/node_modules/kind-of
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/to-regex
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/define-property
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/define-property/node_modules/is-descriptor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/define-property/node_modules/is-accessor-descriptor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/define-property/node_modules/is-data-descriptor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/regex-not
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/safe-regex
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/ret
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/extglob
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/extglob/node_modules/define-property
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/extglob/node_modules/is-descriptor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/extglob/node_modules/is-accessor-descriptor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/extglob/node_modules/is-data-descriptor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/expand-brackets
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/expand-brackets/node_modules/debug
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/expand-brackets/node_modules/ms
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/expand-brackets/node_modules/define-property
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/expand-brackets/node_modules/extend-shallow
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/posix-character-classes
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/extglob/node_modules/extend-shallow
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fragment-cache
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/nanomatch
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-windows
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/object.pick
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/neo-async
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/node-libs-browser
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/assert
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/assert/node_modules/util
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/assert/node_modules/inherits
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/browserify-zlib
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/pako
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/buffer
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/base64-js
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/ieee754
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/console-browserify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/date-now
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/constants-browserify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/crypto-browserify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/browserify-cipher
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/browserify-aes
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/buffer-xor
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/cipher-base
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/create-hash
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/md5.js
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/hash-base
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/ripemd160
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/sha.js
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/evp_bytestokey
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/browserify-des
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/des.js
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/minimalistic-assert
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/browserify-sign
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/bn.js
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/browserify-rsa
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/randombytes
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/create-hmac
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/elliptic
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/brorand
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/hash.js
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/hmac-drbg
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/minimalistic-crypto-utils
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/parse-asn1
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/asn1.js
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/pbkdf2
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/create-ecdh
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/diffie-hellman
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/miller-rabin
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/public-encrypt
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/randomfill
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/domain-browser
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/events
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/https-browserify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/os-browserify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/path-browserify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/process
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/querystring-es3
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/stream-browserify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/stream-http
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/builtin-status-codes
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/to-arraybuffer
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/timers-browserify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/setimmediate
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/tty-browserify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/util
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/vm-browserify
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/indexof
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/webpack/node_modules/schema-utils
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/terser-webpack-plugin
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/worker-farm
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/watchpack
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/chokidar
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/anymatch
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/normalize-path
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/async-each
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/glob-parent
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/glob-parent/node_modules/is-glob
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-extglob
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/path-dirname
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-binary-path
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/binary-extensions
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/is-glob
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/readdirp
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/upath
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/webpack-dev-middleware
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/webpack-dev-middleware/node_modules/mime
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/range-parser
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/webpack-log
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/ansi-colors
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/uuid
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/webpack-hot-middleware
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/ansi-html
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/html-entities
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/react-dom
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/scheduler
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/destroy
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/ee-first
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/encodeurl
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/escape-html
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/etag
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/http-errors
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/depd
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/setprototypeof
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/statuses
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/lodash.debounce
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/on-finished
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/path-to-regexp
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/pseudomap
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/remove-trailing-separator
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/mime
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/nan
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/send
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/send/node_modules/debug
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/send/node_modules/ms
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/send/node_modules/statuses
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/node-pre-gyp
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/detect-libc
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/mkdirp
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/minimist
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/needle
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/debug
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/ms
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/iconv-lite
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/safer-buffer
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/sax
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/nopt
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/abbrev
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/osenv
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/os-homedir
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/os-tmpdir
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/npm-packlist
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/ignore-walk
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/minimatch
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/brace-expansion
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/balanced-match
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/concat-map
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/npm-bundled
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/npmlog
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/are-we-there-yet
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/delegates
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/readable-stream
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/core-util-is
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/inherits
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/isarray
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/process-nextick-args
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/safe-buffer
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/string_decoder
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/util-deprecate
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/console-control-strings
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/gauge
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/aproba
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/has-unicode
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/object-assign
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/signal-exit
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/string-width
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/code-point-at
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/is-fullwidth-code-point
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/number-is-nan
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/strip-ansi
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/ansi-regex
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/wide-align
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/set-blocking
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/rc
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/deep-extend
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/ini
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/rc/node_modules/minimist
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/strip-json-comments
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/rimraf
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/glob
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/fs.realpath
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/inflight
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/once
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/wrappy
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/path-is-absolute
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/semver
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/tar
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/chownr
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/fs-minipass
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/minipass
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/yallist
[email protected] /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/fsevents/node_modules/minizlib
Installing any new modules (package.json)
> [email protected] postinstall /tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/preact
> node -e "console.log('\u001b[35m\u001b[1mLove Preact? You can now donate to our open collective:\u001b[22m\u001b[39m\n > \u001b[34mhttps://opencollective.com/preact/donate\u001b[0m')"
Love Preact? You can now donate to our open collective:
> https://opencollective.com/preact/donate
added 96 packages from 95 contributors and audited 6608 packages in 7.591s
found 0 vulnerabilities
Running heroku-postbuild
> [email protected] heroku-postbuild /tmp/build_aba62cec9b0ecc274830e615862f4fe3
> next build
internal/modules/cjs/loader.js:583
throw err;
^
Error: Cannot find module './webpack-config'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
at Function.Module._load (internal/modules/cjs/loader.js:507:25)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.<anonymous> (/tmp/build_aba62cec9b0ecc274830e615862f4fe3/node_modules/next/dist/build/index.js:10:42)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] heroku-postbuild: `next build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] heroku-postbuild script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /tmp/npmcache.jn2Lb/_logs/2019-02-28T06_02_12_138Z-debug.log
-----> Build failed
We're sorry this build is failing! You can troubleshoot common issues here:
https://devcenter.heroku.com/articles/troubleshooting-node-deploys
Some possible problems:
- node_modules checked into source control
https://blog.heroku.com/node-habits-2016#9-only-git-the-important-bits
Love,
Heroku
์ด๊ฒฌ์๋ ์ฌ๋?
"scripts": { "prestart": "next build", "start": "next start -p ${PORT}", }
์์ @dotcypress ์ ์๋ฃจ์ ์ ํตํด ๋ง์นจ๋ด ์ต์ํ ๋ด ํ ํ์ด์ง๋ฅผ ๋ก๋ํ ์ ์์์ง๋ง '/' ์ด์ธ์ ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์ด๋ํ๋ฉด ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ํ์ผ์ ์ ๋ก๋ํ ์ ์๋ ๊ฒ ๊ฐ์ง๋ง ๊ฒฝ๋ก์ 500 ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๊น?
"scripts": { "prestart": "next build", "start": "next start -p ${PORT}", }
์์ @dotcypress ์ ์๋ฃจ์ ์ ํตํด ๋ง์นจ๋ด ์ต์ํ ๋ด ํ ํ์ด์ง๋ฅผ ๋ก๋ํ ์ ์์์ง๋ง '/' ์ด์ธ์ ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์ด๋ํ๋ฉด ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ํ์ผ์ ์ ๋ก๋ํ ์ ์๋ ๊ฒ ๊ฐ์ง๋ง ๊ฒฝ๋ก์ 500 ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๊น?
์ด๊ฒ์ ์ค์ ๋ก ๋๋ฅผ ์ํด ์ผํ ์ ์ผํ ๊ฒ์ด์์ต๋๋ค.
๋ฐ๋ผ์ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ค์์ ์ถ๊ฐํ์ธ์.
"heroku-postbuild": "next build",
"start": "next start -p $PORT"
๊ฑด๋ฐฐ
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
heroku/dokku์ ๊ฒฝ์ฐ
prestart
npm ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ next.js ์ฑ์ ๋น๋ํ ์ ์์ต๋๋ค.