ํ์ด์ง์ ๋ชจ๋ .js ํ์ผ์ด ๊ฒฝ๋ก๊ฐ ๋ฉ๋๋ค. ๋ณ๊ฒฝํ ์ ์๋์?
src/pages๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค.
AFAIK, ๋น์ ์ ํ ์ ์์ต๋๋ค. next.config.js
๋ฅผ ํตํด ํ์ผ ์์คํ
๋ผ์ฐํ
์ ๋นํ์ฑํ ํ ์ ์์ต๋๋ค.
๋ฌธ์์ ๋ฐ๋ฅด๋ฉด dir
๋ ํ๋ก์ ํธ์ ์์น๋ฅผ โโ์ง์ ํ๋ฏ๋ก ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ./src
๋ก ์ค์ ํ๋ ๊ฒ์
๋๋ค.
const next = require('next')({
dev,
dir: './src'
})
๊ทธ๋ฌ๋ ์ด๊ฒ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ API(์ฌ์ฉ์ ์ ์ ์๋ฒ ํฌํจ)์์๋ง ์ฌ์ฉ๋๋ฉฐ ๋ค๋ฅธ ํ์ผ์ ์ถ์ ์์น์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค( next.config.js
๋ฐ static
๋๋ ํ ๋ฆฌ, ์ ์๊ฐ์๋).
์ด ๋ค๋ฅธ ์ฃผ์์ด ๋ฌด์์ ๋งํ๋์ง ๋ชจ๋ฅด์ง๋ง next.js๊ฐ ๋ช ๋ น์ค์์ ํ์ด์ง๋ฅผ ์ฐพ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
$ next ./src
$ next dev ./src
$ next build ./src
$ next start ./src -p 8080
๋๋ ํ ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ ๋ณ๊ฒฝํ ๊ณํ์ด ์์ต๋๋ค. ์ด ์ง๋ฌธ์ ๊ฝค ์ฌ๋ฌ ๋ฒ ๋์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๋ฅผ ๊ฒ์ํ๊ธฐ ์ ์ ์์ผ๋ก ๋ฌธ์ ์ถ์ ๊ธฐ(์ข ๋ฃ๋ ๋ฌธ์ ํฌํจ)์์ ๋ฌธ์ ๋ฅผ ๊ฒ์ํ์ญ์์ค. .
@timneutkens ๋ ํด๋ผ์ด์ธํธ ์ธก ์ฑ์ ๋ํ ์ต์ ํ๋ฅผ ๊ฑฐ๋ถํ moment.js์ ์ ์ง ๊ด๋ฆฌ์์ ๊ฐ์ง ์์ต๋๋ค. ์ด๋ CRA์์๋ ๋ง์ ํ๋ก์ ํธ์์ ์ฌ์ฉ์ ์ง์ ๊ตฌ์ฑ์ผ๋ก ์ด์ด์ง๋๋ค.
๋ง์ ํ๋ก์ ํธ ์์ฉ๊ตฌ์๋ ํ์ผ์ด ์๋ src
ํด๋๊ฐ ์์ต๋๋ค.
์ด๊ฒ์ ํ์ฌ Google์์ ๊ฒ์ํ ๋ ์ฒซ ๋ฒ์งธ ๊ฒฐ๊ณผ์ด๊ธฐ ๋๋ฌธ์ @timneutkens ๋ผ๋ ๊ฒฐ์ ์ ๋ํ ์ด์ ๋ฅผ ์ค๋ช ํ๋ ๊ฒ์ด ๋์์ด ๋ ๊ฒ์ ๋๋ค.
@brainkim์ด ์ธ๊ธํ๋ฏ์ด ํจํค์ง json ์คํฌ๋ฆฝํธ์
ํด๋ ์์ ../๊ฐ ๋ถ์ต๋๋ค.
// src/next.config.js
module.exports = {
distDir: '../dist'
}
// package.json
"scripts": {
"dev": "next ./src",
"build": "next build ./src",
"start": "next start ./src",
..
},
@msegers ์ด ์ค์ ์ ๋ฐ๋ฅด๋ ค๊ณ ํ๋๋ฐ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ง์ด ๋ฐ์ํฉ๋๋ค.
Cannot find module 'next/document'
Cannot find module 'next/error'
...
HTTP ์์ฒญ ์(๊ฐ์ ธ์ค๊ธฐ ๋จ๊ณ์์ ์ค๋ฅ ์์). ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ๊ณ์ ๊ฐ์?
๋ฃจํธ์ pages
์์ด์ผ ํ๋ค๋ ์๊ตฌ ์ฌํญ์ ์ ๋ง ์ ๋ฅผ ๋ฏธ์น๊ฒ ๋ง๋ญ๋๋ค. ํ์ค์ ์ผ๋ก ํฐ ๊ฒ์ ์คํ์ผ, ๊ตฌ์ฑ ์์, ํด๋ผ์ด์ธํธ ์ ์ฅ์, ๊ตฌ์ฑ ํ์ผ ๋ฑ ๋ฃจํธ์ ์ ์ดํ ์ ์์ ์ ๋๋ก ์์ด๊ธฐ ์์ํฉ๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์์ผ๋ฉด ํฉ๋๋ค.
์ถ๊ฐ: pages
์ client/pages
์ ์ฌ๋ณผ๋ฆญ ๋งํฌํ๋ ค๊ณ ํ์ต๋๋ค. Hot Reload๋ฅผ ์ ์ธํ๊ณ ๋ ๋๋ถ๋ถ์ ๊ธฐ๋ฅ์ด ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌํผ :(
@msegers ์ ์์ด ์ ์๊ฒ
next-i18next๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ NextI18 ๊ตฌ์ฑ์์ ์ฌ๋ฐ๋ฅธ localePath๋ฅผ ์ค์ ํ๋์ง ํ์ธํ์ญ์์ค. localePath: 'src/static/locales/',
์ด์ ๊ฐ์ด :
NextI18NextInstance = new NextI18Next({
defaultLanguage: 'en',
otherLanguages: ['en'],
debug: true,
localePath: 'src/static/locales/',
});
์ด์ ๋ํ ์๊ตฌ๊ฐ ๊ฝค ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ต์์ ํ์ด์ง๋ฅผ ์ฐพ๋ ์์น๋ฅผ ๊ตฌ์ฑํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@malimccalla ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค: https://github.com/slaterbbx/fullstackinator
๋ด๊ฐ ์๋ ํ ํด๋ ์ด๋ฆ์ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ "ํ์ด์ง"๋ฅผ ์ ์งํด์ผ ํฉ๋๋ค.
ํด๋ผ์ด์ธํธ ํด๋๋ฅผ ์ดํด๋ณด๋ฉด ์ด๋ฅผ ์ํํ๋ ๋ฐ ํ์ํ ๋ช ๊ฐ์ง ํต์ฌ ์ฌํญ์ด ์์์ ์ ์ ์์ต๋๋ค. ๋ด๊ฐ ๋ณด์ฌ์ฃผ๋ ์๋ ์ฌ์ฉ์ ์ ์ ์๋ฒ ์๋๋ฆฌ์ค + typescript์ ๋ํ ๊ฒ์ด์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ํต์ฌ์ ๋์ผํฉ๋๋ค.
module.exports = {
distDir: '../.next' // so that you can tell it to go up a folder for the dev and prod files.
}
์ง๋ฌธ์ด ์์ผ์๋ฉด ์ธ์ ๋ ์ง ์ ์๊ฒ ์ด๋ฉ์ผ์ ๋ณด๋ด์ฃผ์ญ์์ค. ์ฌ๊ธฐ๋ ๊ด์ฐฎ์ต๋๋ค.
์ ๋ฐ์ดํธ: ๋ฐฉ๊ธ ์์ @brainkim ์ด ๋๊ฐ์ ์ค๋ช ์ ์ ๊ณตํ๋ค๋ ๊ฒ์ ์์์ฐจ๋ ธ์ต๋๋ค. ์ฃ์กํฉ๋๋ค. ์ฐ๊ฒฐ๋ ์์ ๊ฐ ๊ทธ๋ฌํ ์์ ๋ฅผ ์ฐพ๋ ์ฌ๋์๊ฒ ํจ์ฌ ๋ ๋ณต์กํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ์ด ๋ถ๋ถ์ ๋จ๊ฒจ๋๊ฒ ์ต๋๋ค.
@slaterbbx ๊ฐ์ฌํฉ๋๋ค.
๋ด ๋ฌธ์ ๋ ๊ฐ๋ ์ ์ผ๋ก ๊ด๋ จ๋ ์ฝ๋๋ฅผ ํจ๊ป ๋ฐฐ์นํ๋ ค๊ณ ํ๋ค๋ ๊ฒ์ ๋๋ค. ๋๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค
โโโ components
| โโโ GridItem.tsx
| โโโ Avatar.tsx
| โโโ Button.tsx
โโโ pages
| โโโ profile
| โโโ components
| | โโโ CoverPhoto.tsx
| | โโโ UserInterests.tsx
| โโโ data.ts
| โโโ styles.ts
| โโโ index.tsx
์ด ์ ๊ทผ ๋ฐฉ์์ ๋ฌธ์ (@timneutkens๊ฐ ์ง์ ํ ๋๋ก)๋ pages
๋ด์ ๋ชจ๋ ํ์ผ์ด webpack ์ง์
์ ์ผ๋ก ์ฒ๋ฆฌ๋์ด ์ฐจ๋ก๋ก commonchunks ๊ตฌ์ฑ์ ๋ํด ๊ณ ๋ ค๋๋ค๋ ์ ์
๋๋ค. ํ์ฌ ๊ทธ๋๋ก Next๋ pages
๋ด์ ์ต์์ ํ์ด์ง ๊ตฌ์ฑ ์์๋ง ์ง์ํฉ๋๋ค. ํ์ด์ง๋ฅผ ์ฐพ๋ ์์น๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค๋ฉด ์ด (ํฉ๋ฆฌ์ ์ธ?) ๊ตฌ์กฐ๋ฅผ ์ ์งํ ์ ์์ต๋๋ค. ๋๋ ๊ตฌ์ฑ์์ ์ด์ ๊ฐ์ ๊ฒ์ ์์ํ๋ค.
pages: ["./pages/*/index.tsx"]
์ฌ๋ฌ ์์น์ ํ์ด์ง๋ฅผ ์ ์ฅํ๋ ํ๋ก์ ํธ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
pages: ["./pages/*", "./admin-pages/*"]
๋๋ ๋ค๋ฅธ ์ด๋ฆ์ ํด๋์ ์ต์์ ๊ตฌ์ฑ ์์๋ฅผ ์ ์ฅํ๋ ค๋ ํ๋ก์ ํธ
pages: ["./views/*"]
๋๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉ์ ์ ์ํ๋ ค๋ ํ๋ก์ ํธ
pages: ["./src/custom/path/to/pages/*"]
์ด๊ฒ์ ๊ณต์ ํ ๊ธฐ๋ฅ์ด๋ฉฐ ๊ธ์ง์ ์ธ ํจํด์ฒ๋ผ ๋๊ปด์ง์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค( ์์ฌ ์์
๊ณต๊ฐ ์ ๋์ผํ ํจํด์ ์ฌ์ฉํ์ฌ Next.js ์์ฒด๊ฐ ๊ตฌํ ํ๋ ํจํด workspaces
์ ์ฐพ์ต๋๋ค).
@malimccalla ์, ๋ค, ๋น์ ์ ์ฌํ์ ์์ ํ ์ดํดํฉ๋๋ค. ๋ํ ์์ ํ ์ ์ฐํ ์๋ฃจ์ ์ ์ํฉ๋๋ค. ๋ ธ๋ ฅ์ ๊ธฐ์ฌํ ๊ฐ์น๊ฐ ์๋ ๋ฌด์ธ๊ฐ์ผ ์๋ ์์ง๋ง ์๋ฃจ์ ์ ๊ณต์ ๊ด์ฌ์ด ์๋ค๋ ๊ฒ์ ์ฝ์์ต๋๋ค. ๋ฌผ๋ก ๊ทธ๋ค์ด ๊ทธ๋ฌํ ๊ธฐ๋ถ์ ๊ด์ฌ์ด ์๋ค๊ณ ํ์ธํ์ง ์๋ ํ, ๋ค์ ์ฐฉ์๋ฅผ ๊ณ ๋ คํ๋ ํ๋ก์ ํธ๊ฐ ๋ ์ ์์ต๋๋ค ๐โโ๏ธ
@malimccalla ๋ค์์ผ๋ก ์ํ๋ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ก ๋ฉ์ง๊ฒ ํ๋ ์ดํ ์ ์์์ต๋๊น? ์๋๋ฉด pages
๋๋ ํ ๋ฆฌ๋ฅผ ํํํ๊ฒ ๋ง๋ค๊ณ ํ์ด์ง ํ์ ๊ตฌ์ฑ ์์๋ฅผ ๋ค๋ฅธ ๊ณณ์ ์ ์ฅํ๊ฒ ๋์์ต๋๊น?
@joncursi pages
๋๋ ํ ๋ฆฌ์ ์ด๋ฆ์ views
๋ก ๋ณ๊ฒฝํ ๋ค์ ์ต์์ ํ์ด์ง ๊ตฌ์ฑ ์์๋ฅผ ๋ด๋ณด๋ด๋ ์ ์ผํ ๋ชฉ์ ์ธ ์ pages
๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ์ฌ ํด๊ฒฐํ์ต๋๋ค.
์๋ฅผ ๋ค์ด pages/profile.tsx
์ด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
export { default } from "../views/profile"
์ด์์ ์ด์ง๋ ์์ง๋ง ์ํ๋ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
@folofse i18n
๋๋ฒ๊ทธ๋ฅผ ํ์ฑํํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ๋ก๊ทธ๋ฅผ ์ ๊ณตํ์ต๋๋ค(i18next).
...
localePath: 'src/static/locales',
localeStructure: '{{lng}}/{{ns}}',
localeSubpaths: 'foreign',
backend:
{ loadPath:
'V:/dev/some-project/static/locales/{{lng}}/{{ns}}.json',
addPath:
'V:/dev/some-project/static/locales/{{lng}}/{{ns}}.missing.json' },
allLanguages: [ 'de', 'de' ],
loadPath๋ *\static\locales
๋์ง๋ง *\src\static\locales
์ฌ์ผ ํฉ๋๋ค.
์๋ฌธ:
/projectRoot/next-web/server.js
์ ์ฌ์ฉ์ ์ ์ ์๋ฒ ํ์ผ์ด ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด /projectRoop/next-renderer-universal/client
๋ง์ดํธํฉ๋๋ค.
// in /projectRoot/next-web/server.js
const nextApp = next({
dev: NODE_ENV !== 'production',
dir: APP_DIR,
quiet: false,
});
์ฐ๋ฆฌ๊ฐ ์ค์ ๋ก ์ด๊ฒ์ ์ด๋ป๊ฒ ๋ง๋ค๊ณ ๋ฐฐ์กํฉ๋๊น? :)?
@armenr ์ด ์์ ์ฑ์ด ๋์์ด ๋ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ์ง์ ์ง์
์ ( src/server.ts
)์ ์ฌ์ฉํ๋ฉฐ next()
ํธ์ถ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
https://gitlab.com/kachkaev/website-frontend/blob/e1c7106cf63811f6341c4bd47dd2354eb2546914/src/server.ts#L11 -18
๋ชจ๋ ์์ค ํ์ผ์ PROJECT_ROOT/src
(๋๋ ๋ค๋ฅธ ํ์ ๋๋ ํ ๋ฆฌ) ์๋์ ์ ์งํ๋ ๊ฒ์ Next.js์์ ์๋นํ ์ด๋ ต์ต๋๋ค. Next 9์ ์ถ๊ฐ๋ ์๋ TS ํตํฉ์ผ๋ก ์ธํด ์ํฉ์ด ์ข ๋ ๋ณต์กํด์ก์ต๋๋ค. ๐ https://github.com/zeit/next.js/issues/4315 ๊ฐ ๋ค์ ์ด๋ ธ์ผ๋ฉด ํฉ๋๋ค.
:) ๋๋ monorepo๋ฅผ ์ค์ ํ๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ๋ฌป๋ ์ง๋ฌธ์ ๋ค๋ฅธ ๋ณต์ก์ฑ์ผ๋ก ์ธํด ๋ณต์กํด์ก์ต๋๋ค.
๊ทธ ์ดํ๋ก ์ฐ๋ฆฌ๋ ์ ํํ ๋ฌด์์ ํด์ผ ํ ์ง ์์๋์ง๋ง ์ํ ์ฝ๋์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ฌ์ ํ ์ ์ฉํฉ๋๋ค! ๊ณ ๋ง์ต๋๋ค :)
@armenr monorepo ์ ๊ด๋ จํ์ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น? lerna๋ก ํ๋ก์ ํธ๋ฅผ ์ค์ ํ์ง๋ง ์ฌ์ ํ ์ ์ฝ์ด ์์ต๋๋ค.
@anoop-gut
Lerna, monorepo, ์์ฌ ์์
๊ณต๊ฐ ๋ฐ ๋ณ๋์ packages.
๋ชจ๋ ํ๋ก ํธ์๋ ์ฝ๋๋ฅผ renderer-universal
ํด๋์ ๋ฃ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ next-web
๋ผ๋ ํจํค์ง๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ฌ์ฉ์ ์ง์ ๋ค์ ์๋ฒ๋ฅผ ๋ณด๊ดํ ์ ์์ต๋๋ค. ๋๋ ๋ํ nextron
๋ณด๊ดํ๋ ๋ ๋ค๋ฅธ ํจํค์ง๊ฐ ์์ต๋๋ค(next + electron...excellent project, GitHub์์ ์ฐพ์๋ณด๊ธฐ).
nextron ๋ฐ next-web์ฉ server.js ํ์ผ์์ ๋ค์์ ์ฌ์ฉํฉ๋๋ค.
const nextApp = next({
dev: NODE_ENV !== 'production',
dir: APP_DIR,
quiet: false,
});
๊ทธ๋ฆฌ๊ณ ENV ๋ณ์๋ฅผ ํตํด ๋ ๋๋ฌ-์ ๋๋ฒ์ค ํจํค์ง์ ๋๋ ํ ๋ฆฌ ์์น๋ฅผ ํด๋น ์๋ฒ ํ์ผ์ ์ ๋ฌํฉ๋๋ค.
๋ํ monorepo์ ๋ค๋ฅธ lerna ํจํค์ง์ ์๋ ์ฐ๋ฆฌ๊ฐ ์์ฑํ ๋ง์ ๋ง์ดํฌ๋ก์๋น์ค๋ ์์ต๋๋ค.
์ฌ์ฉ์ ์ ์ webpack/babel ๊ตฌ์ฑ ๋๋ symlink ํด๊ฒฐ์ด ํ์ํ์ง ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ค์ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ์ ํธํฉ๋๋ค.
- api
- pages
- utils
์ต์์ src
ํด๋๋ ์ ์์ด๋ฉฐ ๋ง์ ํ๋ก์ ํธ์์ ์ฌ์ฉํฉ๋๋ค. ์ ์ ๋ผ ?
@revskill10 ๋ค , ์ ๋ ๊ทธ ๊ตฌ์กฐ๋ฅผ ์ ํธํ์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ฑ ๋ฐ ์๋น์ค + NextJS๋ฅผ ๋ฐ์คํฌํฑ/ํด๋ผ์ฐ๋ ํ์ด๋ธ๋ฆฌ๋์ ์น ๋น๋ ๋ชจ๋์ ๋ฐฐํฌํ๊ณ ์์ต๋๋ค.
ํจํค์ง ๊ด๋ฆฌ - node_modules ์ค๋ณต, ์ฌ์ฉ์ ์ ์ serverJS ํ์ผ w/ Next, ๊ณต์ ๋ชจ๋ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ก ๋ค๋ฅธ ๋ง์ดํฌ๋ก์๋น์ค ์ฌ์ด์์ ๋ชจ๋ ๊ฒ์ ๋ถ๋ฆฌํ๊ฑฐ๋ ๊ธฐ์กด์/๊ฐ๋จํ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฅด๊ธฐ๊ฐ ์ด๋ ต๊ฒ ๋ง๋ค์์ต๋๋ค.
ํ์ ์ํด ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๋ ์ค์ ์ ์ ๊ณตํ๊ธฐ ์ํด ๋ฐ์คํฌํ๊ณผ ์น ๋ฒ์ ์์ ๋์์ ์์ ํ๊ณ ๋ชจ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋ถ๋ฆฌํ๊ณ ๊ทธ๋ค ์ฌ์ด์ ๋ชจ๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ชจ๋์ ์ค๋ณต ์ ๊ฑฐํ ์ ์๋ ํจํด์ ๊ณ ์ํด์ผ ํ์ต๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ ์ ์ผํ "์ฌ๋ฐ๋ฅธ" ๋ฐฉ๋ฒ์ ๋ด๊ฐ ์ค๋ช ํ ์ค์ ์ ํตํ ๊ฒ์ ๋๋ค.
์์ํ๋ ํ๊ท ์ ์ธ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์ด๊ฒ์ ๊ณผ์์ ๋๋ค. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ์ด๊ธฐ ์๊ตฌ ์ฌํญ๊ณผ ๊ตฌ์ถํด์ผ ํ ์ฌํญ์ ๋ํด ํฉ๋ฆฌ์ ์ผ๋ก ๋ช ํํ๊ฒ ์ดํดํ๊ณ ์์๊ธฐ ๋๋ฌธ์ ์ง๋ฌธ์ ๋๋ตํ์ ๋ฟ์ ๋๋ค.
๊ทธ๋งํ ๊ฐ์น๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ์ ์ server.js ํ์ผ์ ์ ๊ฑฐํ๊ณ ๋์ Next9์ ๊ตฌํ๋ /api ๋ ์ด์์์ผ๋ก ์ด๋ํ ์๊ฐ์ ๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ์น + ๋ฅ์คํธ๋ก ์ ๋์์ ๊ฐ๋ฐ/๊ตฌ์ถํ๋ ๊ฒ์ ์ฌ์ ํ ์ฝ๊ฒ ๋ง๋ค ์ ์๋์ง ์ฌ๋ถ๋ ์์ง ๋ช ํํ์ง ์์ต๋๋ค.
@armenr ์ ์ฅ์ ์์น๋ฅผ
distDir: '../dist',
๋ฉ์๋๋ Typescript ๋ฐ ๊ณ ๊ฐ ์๋ฒ๊ฐ ์๋ Next 9์์ ๋ ์ด์ ์๋ํ์ง ์์ต๋๋ค. ๋ฌธ์ ๋ src
๋๋ ํ ๋ฆฌ์ tsconfig.json
๋ฅผ ์์ฑํ๋ค๋ ๊ฒ์
๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ช ์๊ฐ์ ๋ณด๋์ง ๋ง ๋ชจ๋ ๊ฒ์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ๋ก ์ฎ๊ฒจ์ผํ์ต๋๋ค ... ๊ทธ๋ฐ ํผ๋ ๐
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ช ์๊ฐ์ ๋ณด๋์ง ๋ง ๋ชจ๋ ๊ฒ์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ๋ก ์ฎ๊ฒจ์ผํ์ต๋๋ค ... ๊ทธ๋ฐ ํผ๋ ๐
๊ฒฝ๋ก ํ์ธ์ ์ด์ง๋ฝํ ๊ฑฐ๋ tsconfig.json์์ ์ง์ ์ ํ์ผ์ ์์ ํ๋ฉด ์๋ฌด ๊ฒ๋ ๋ณ๊ฒฝ๋์ง
์ด๊ฒ์ 2017๋ ๋ถํฐ ์์ฒญ๋์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ฐ ์ด๋ป๊ฒ ๋์์ ๋๋ฆด ์ ์์ต๋๊น?
@timneutkens ์ด ๋ฌธ์ ๋ฅผ ๋ค์ ์ด๊ณ ์ฌ๊ณ
@janhesters https://github.com/zeit/next.js/issues/8415
์ด ๋ฌธ์ ๋ฅผ ์ ๊ธ ์์ ์
๋๋ค.
https://github.com/zeit/next.js/issues/4315#issuecomment -522263598
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด ๋ค๋ฅธ ์ฃผ์์ด ๋ฌด์์ ๋งํ๋์ง ๋ชจ๋ฅด์ง๋ง next.js๊ฐ ๋ช ๋ น์ค์์ ํ์ด์ง๋ฅผ ์ฐพ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.