Angular 8 ํ๋ก์ ํธ๋ก ์๊ฐ์ ๊ฐ์ ธ ์ค๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๊ฐ๋ ๋ฒ์ = 8.3.26
์ ํ ์คํฌ๋ฆฝํธ ๋ฒ์ = 3.6.2
์๊ฐ ๋ฒ์ = 2.25.0
TS2307 ์ค๋ฅ๊ฐ ๋ฐ์
'์๊ฐ'์์ ์๊ฐ ๊ฐ์ ธ ์ค๊ธฐ; .
tsConfig์์ "moduleResolution": "node" ๋ฐ "allowSyntheticDefaultImports": true ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
๋๊ตฌ๋ ์ง ์ด๊ฒ์ ๋ํด ๋์ธ ์ ์์ต๋๊น?
2.24 ๋ฒ์ ์ ์๋ํด๋ณด์ญ์์ค. ๋ด ํ ์คํธ๋ ์ ๋ฒ์ ์์ ์คํจํ๊ธฐ ์์ํ์ง๋ง ์ด์ ๋ฒ์ ์์๋ ๊ด์ฐฎ์ต๋๋ค.
2.24 ๋ฒ์ ์ ์๋ํด๋ณด์ญ์์ค. ๋ด ํ ์คํธ๋ ์ ๋ฒ์ ์์ ์คํจํ๊ธฐ ์์ํ์ง๋ง ์ด์ ๋ฒ์ ์์๋ ๊ด์ฐฎ์ต๋๋ค.
๋๋ ์๋ํ๋ค. ๊ทธ๋ฌ๋ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
package.json์ ์๊ฐ ๋ผ์ธ์ ์ด๋ป๊ฒ ์๊ฒผ์ต๋๊น?
2.24.0์์ ์๋ํ๋ ๊ฒ์ 2.25.0์์ ๋ฐฐํฌ ์ค๋ฅ ์ผ ์ ์์ต๋๋ค.
์์ ๋ ์ ๋ฒ์ ์ ๋ฐฐํฌํ์ญ์์ค.
yarn์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ package.json์ ํด์๋ ๋ธ๋ก์ ์ถ๊ฐํ์ฌ ํ์ ์ข ์์ฑ ๋ฒ์ ์ ์ฌ์ ์ํ๋ฉด ์ ์๊ฒ ํจ๊ณผ์ ์ ๋๋ค.
"resolutions": {
"moment": "2.24.0"
}
Typescript ๋ชจ๋ ํด์๋๊ฐ ์๊ฐ์ ์ฐพ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ฉด ./node_modules/moment/moment๊ฐ ์๋ํฉ๋๋ค. @codebrent ๊ฐ์ฌํฉ๋๋ค. ์ด์ 2.24.0 ๋ฒ์ ์์ ์๋ํฉ๋๋ค.
2.25์์๋ package.json์ ์ถ๊ฐ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ typedef ํ์ผ์ ํด๋นํ๋ ์์น๊ฐ ์๋ค๋ ๊ฒ์ ์ดํดํ๋ฉด. ์๋ง๋ ์ด๊ฒ์ด ํ์ดํ์ ๊นจ ๋จ๋ ธ์๊น์?
"typesVersions": {
">=3.1": {
"*": [
"ts3.1-typings/*"
]
}
},
2.24.0์์ ์๋ํ๋ ๊ฒ์ 2.25.0์์ ๋ฐฐํฌ ์ค๋ฅ ์ผ ์ ์์ต๋๋ค.
์์ ๋ ์ ๋ฒ์ ์ ๋ฐฐํฌํ์ญ์์ค.
๋๋ฅผ ์ํด ์๋ํ์ง ์์ต๋๋ค
package.json์ ์๊ฐ ๋ผ์ธ์ ์ด๋ป๊ฒ ์๊ฒผ์ต๋๊น?
"์๊ฐ": "^ 2.25.0",
๋ชจ๋ ์๊ฐ ๊ฐ์ ธ ์ค๊ธฐ ์ค๋ฅ ๋ฐํ
package.json์ ์๊ฐ ๋ผ์ธ์ ์ด๋ป๊ฒ ์๊ฒผ์ต๋๊น?
"moment": "2.24.0"์ผ๋ก ๋ณ๊ฒฝํ์ญ์์ค. ^๊ฐ ์๋์ง ํ์ธํ์ญ์์ค. node_models๋ฅผ ์ญ์ ํ๊ณ npm์ ๋ค์ ์ค์นํ์ญ์์ค. ๋ํ package-lock.json์ด์๋ ๊ฒฝ์ฐ ์ญ์ ํด์ผ ํ ์๋ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด npm์ด 2.25๋ฅผ ๊ณ์ ์ค์นํฉ๋๋ค.
๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ์์ผ๋ฉฐ Dependabot Compatibility ์ ์ ์ ๋ฐ๋ฅด๋ฉด ๋๋ง ๊ทธ๋ฐ ๊ฒ์ ์๋๋๋ค.
2.24.0์ผ๋ก ๋ค์ด ๊ทธ๋ ์ด๋ํ๋ฉด ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋ ์ ์์ง๋ง ์ ์ด๋ ์ผ๋ถ ์ฌ์ฉ์๊ฐ 2.25.0์ ์ฌ์ฉํ๋ ๊ฒ์ ํจ๊ณผ์ ์ผ๋ก ๋ฐฉ์งํฉ๋๋ค.
"moment": "2.24.0"์ผ๋ก ๋ณ๊ฒฝํ์ญ์์ค. ^๊ฐ ์๋์ง ํ์ธํ์ญ์์ค. node_models๋ฅผ ์ญ์ ํ๊ณ npm์ ๋ค์ ์ค์นํ์ญ์์ค. ๋ํ package-lock.json์ด์๋ ๊ฒฝ์ฐ ์ญ์ ํด์ผ ํ ์๋ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด npm์ด 2.25๋ฅผ ๊ณ์ ์ค์นํฉ๋๋ค.
์ด๋ฅผ์ํ ๋ ์์ ํ๊ณ ํ์ค์ ์ธ ๋ฐฉ๋ฒ์ ๋จ์ํ npm install [email protected]
์
๋๋ค. ์๋ฌด๊ฒ๋ ์ญ์ ํ๊ฑฐ๋ ์๋์ผ๋ก ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค.
2.24๋ก ๋ค์ด ๊ทธ๋ ์ด๋ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
"moment": "2.24.0"์ผ๋ก ๋ณ๊ฒฝํ์ญ์์ค. ^๊ฐ ์๋์ง ํ์ธํ์ญ์์ค. node_models๋ฅผ ์ญ์ ํ๊ณ npm์ ๋ค์ ์ค์นํ์ญ์์ค. ๋ํ package-lock.json์ด์๋ ๊ฒฝ์ฐ ์ญ์ ํด์ผ ํ ์๋ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด npm์ด 2.25๋ฅผ ๊ณ์ ์ค์นํฉ๋๋ค.
์ด๋ฅผ์ํ ๋ ์์ ํ๊ณ ํ์ค์ ์ธ ๋ฐฉ๋ฒ์ ๋จ์ํ
npm install [email protected]
์ ๋๋ค. ์๋ฌด๊ฒ๋ ์ญ์ ํ๊ฑฐ๋ ์๋์ผ๋ก ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค.2.24๋ก ๋ค์ด ๊ทธ๋ ์ด๋ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ก์ปฌ์์ 2.24.0์ผ๋ก ๋ค์ด ๊ทธ๋ ์ด๋ ํ ํ ์คํ๋ฉ๋๋ค. ํ์ง๋ง ์ด๊ฒ์ Azure์ ๋ฐฐํฌํ๋ฉด ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ด ์ง๋ฌธ์ ๋์ผํ package.json์ด ๋ก์ปฌ ๋ฐ azure๋ฅผ ๋ชจ๋ ์คํํ๋ ๊ฒฝ์ฐ ๊ฐ์ ธ ์ค๊ธฐ ์๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ด์ ์
๋๋ค.
๋๋ ์๋ฒ์ ์ค๋ฅ ๋ก๊ทธ๋ฅผ ์ฒจ๋ถํ์ต๋๋ค.
2.25.0์ด์ด ๋ฌธ์ ๋ฅผ ์ ๊ณตํ์ง๋ง 2.24.0์์๋ ํ์ธํ ์ ์์ต๋๋ค.
๋ํ 2.25.0์ด์ด ๋ฌธ์ ๋ฅผ ์ ๊ณตํจ์ ํ์ธํฉ๋๋ค. Moment 2.24.0์ ์ ์๋ํฉ๋๋ค.
๋์ปค ์ด๋ฏธ์ง ๋น๋ ์ค์์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋๋ฅผ ์ํด 2.24.0์์ ์๋ํ์ง ์์ต๋๋ค.
๋ค์ด ๊ทธ๋ ์ด๋๋ ์ฌ๊ธฐ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ์๋ง๋ TypeScript ๋ฒ์ ์ด ๋ฒ๊ทธ๋ฅผ ๊ฐ๋ ๋ฐ ์ญํ ์ ํ ์ ์์ต๋๊น?
์๊ฐ ์๊ฐ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค
package.json์์ ์๊ฐ ๋ฒ์ ์ 2.24.0์ผ๋ก ์์ ํ์ง ์์ต๋๋ค.
ํธ์ ๋ด์ ๊ฐ๊ธฐ
2.24.0์์ ์๋ํ์ง ์์ต๋๋ค.
2.24.0์ผ๋ก ๋ค์ด ๊ทธ๋ ์ด๋ํ์ง ์์์ ๊ฒ์ ๋๋ค. ํจํค์ง ์ ๊ธ ํ์ผ๊ณผ node_modules ํด๋๋ฅผ ์ ๊ฑฐํ ํ ๋ค์ ๋ช ๋ น์ ์คํํ์ญ์์ค.
npm install --save --save-exact [email protected]
npm ์ค์น
๋ํ typescript ํ๋ก์ ํธ์์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ package.json์ ์ข ์์ฑ์ ๊ณ ์ ํ์ง ์์๊ธฐ ๋๋ฌธ์ ๋น๋๊ฐ ๊ฐ์๊ธฐ ์คํจํฉ๋๋ค.
error TS2307: Cannot find module 'moment'.
error Command failed with exit code 2.
๋ฒ์ ์ "2.24.0"
๊ณ ์ ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
package.json์ resolutions ํ๋๋ก ์๋ ํ ์ ์์ต๋๋ค.
๋ํ๋ค
"ํด๊ฒฐ์ฑ ": {
"moment": "2.24.0"
}
๋ํ 2.25.0์์ typescript 3.8.3๊ณผ ts-node 8.9.1์์ ์คํ๋๋ ๋์ผํ ๋ฌธ์ ๊ฐ ์์์ ํ์ธํฉ๋๋ค. 2.24.0์ผ๋ก ๋ค์ด ๊ทธ๋ ์ด๋ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
ํธ์ ๋ด์ ๊ฐ๊ธฐ
2.24.0์์ ์๋ํ์ง ์์ต๋๋ค.
2.24.0์ผ๋ก ๋ค์ด ๊ทธ๋ ์ด๋ํ์ง ์์์ ๊ฒ์ ๋๋ค. ํจํค์ง ์ ๊ธ ํ์ผ๊ณผ node_modules ํด๋๋ฅผ ์ ๊ฑฐํ ํ ๋ค์ ๋ช ๋ น์ ์คํํ์ญ์์ค.
npm install --save --save-exact [email protected]
npm ์ค์น
๊ณ ๋ง์. ๋ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. 2.24.0์ผ๋ก ์์
์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ : "moment": "2.24.0"
์๋ชป๋ ์ฌ์ฉ๋ฒ : "moment": "^2.24.0"
"moment": "2.24.0"๋ ์ ์๊ฒ ํจ๊ณผ์ ์ ๋๋ค ..
๋์ผ, 2.24.0์์ ์ ๊ธ์ด ์์ ๋์์ต๋๋ค.
์ด๊ฒ์ ์นํฉ ^ 4.2.0์ผ๋ก ๋น๋ ๋ Angular 7.2 ์ฑ์ ์์ต๋๋ค.
์, 2.24.0์ ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค. ๋๊ตฌ๋ ์ง ๊ทธ๋ค์ด ๋ง๋ ๋ณ๊ฒฝ ์ฌํญ์ ์๊ณ ์์ต๋๊น?
๋์ผ, ๊ณ ์ ๋ฒ์ ์ "^ 2.24"๋์ "2.24"๋ก ์ค์ ํ์ฌ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
์ด ์์ ์ ๋ํ ETA๊ฐ ์์ต๋๊น?
๊ธ์์ผ์ด๊ณ ์ฃผ๋ง ์ ์ 2.24.0์ผ๋ก ๋ค์ด ๊ทธ๋ ์ด๋ํด์ผํ๋์ง ๊ถ๊ธํฉ๋๋ค.
"moment": "2.24.0"์ผ๋ก ๋ณ๊ฒฝํ์ญ์์ค. ^๊ฐ ์๋์ง ํ์ธํ์ญ์์ค. node_models๋ฅผ ์ญ์ ํ๊ณ npm์ ๋ค์ ์ค์นํ์ญ์์ค. ๋ํ package-lock.json์ด์๋ ๊ฒฝ์ฐ ์ญ์ ํด์ผ ํ ์๋ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด npm์ด 2.25๋ฅผ ๊ณ์ ์ค์นํฉ๋๋ค.
๊ฐ์ฌ. ๋ฒ์ ์ 2.24.0์ผ๋ก ๋ค์ด ๊ทธ๋ ์ด๋ํ์ฌ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
๋น์ ์ ๋ ์ด์ ๊ทธ ์๊ฐ์ ์ด๊ณ ์์ง ์์ต๋๋ค :)
"moment": "2.24.0"์ผ๋ก ๋ณ๊ฒฝํ์ญ์์ค. ^๊ฐ ์๋์ง ํ์ธํ์ญ์์ค. node_models๋ฅผ ์ญ์ ํ๊ณ npm์ ๋ค์ ์ค์นํ์ญ์์ค. ๋ํ package-lock.json์ด์๋ ๊ฒฝ์ฐ ์ญ์ ํด์ผ ํ ์๋ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด npm์ด 2.25๋ฅผ ๊ณ์ ์ค์นํฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค. ๋ฒ์ ์ 2.25.0์์ 2.24.0์ผ๋ก ๋ค์ด ๊ทธ๋ ์ด๋ํ์ฌ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ๋ํ "^ 2.24.0"์ "2.24.0"์ผ๋กํ์ต๋๋ค.
2.25.0
์์ 2.24.0
2.25.0
๋ก์ ๋ค์ด ๊ทธ๋ ์ด๋๊ฐ ์๋ํ์ง ์๊ณ ๋์ผํ ์ค๋ฅ๊ฐ ๋ค์ ๋ฐ์ํ๋ฉด ๋ชจ๋์ ์์ ํ ์ ๊ฑฐํ๊ณ ๋ค์ ์ค์นํ์ญ์์ค.
npm ์ฌ์ฉ :
npm uninstall moment
npm install [email protected]
๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ฑด๋ฐฐ
Unkn0wn0x
์์ ์ฌํญ์ด ์ธ์ ์ถ์ ๋ ์ง ์๊ฐํ์ญ๋๊น? ๋๋ ์ด๊ฒ์ด ๊นจ์ง ๋ฌธ์ ๋ผ๋ ๊ฒ์ ์๊ณ ์์ผ๋ฉฐ ์ง๊ธ ์๊ฐ ๋ฒ์ ์ 2.24๋ก ์ค์ ํ๊ธฐ ์ํด Master์์ ๋ณ๊ฒฝํ ๊ถํ์ด ์์ผ๋ฉฐ ํ๋ก๋์
๋น๋๊ฐ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ ์คํจํฉ๋๋ค.
๋ฆด๋ฆฌ์ค ETA ๊ฐ์ฌ๋ฅผ ๊ณต์ ํ์ญ์์ค
์ด ๋ฌธ์ ๋ ์์๊ณ ์์ ํ์ต๋๋ค.
๊ทธ ๋ผ์ธ์ ์ ๊ฑฐํ์ฌ
"typesVersions": {
">=3.1": {
"*": [
"ts3.1-typings/*"
]
}
},
150-156 ํ
์
.node_modules \ moment \ package.json
์ด ์์
์ ๋ง์น๋ฉด ๋ฒ์ 2.25์์ ์์ ํ ์ ์๋ํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ์์๊ณ ์์ ํ์ต๋๋ค.
๊ทธ ๋ผ์ธ์ ์ ๊ฑฐํ์ฌ
"typesVersions": { ">=3.1": { "*": [ "ts3.1-typings/*" ] } },
150-156 ํ
์
.node_modules \ moment \ package.json
์ด ์์ ์ ๋ง์น๋ฉด ๋ฒ์ 2.25์์ ์์ ํ ์ ์๋ํฉ๋๋ค.
์ด๊ฒ์ ๋ก์ปฌ์์ ์๋ํ์ง๋ง CI ํ์ดํ ๋ผ์ธ์ ๊ฒฝ์ฐ
๋ชจ๋ ๊ฐ์ฌํฉ๋๋ค : D 2.24.0๋ ์ ์๊ฒ๋ ํจ๊ณผ์ ์ด์์ต๋๋ค ..
2.24.0
๋ค์ด ๊ทธ๋ ์ด๋๋์์ผ๋ฉฐ ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค.
2.25.1 ์ถ์
2.25.1 ํ ์คํธ๋ฅผ ๊ฑฐ์ณ ๋ฌธ์ ๊ฐ ์ฌ๋ผ์ก์ต๋๋ค. ๊ฐ์ฌ
๋ค, ์ด๊ฒ๋ ํ ์คํธํ๊ณ ์ด๋ค ๋ฌธ์ ๋ ๊ฒฝํํ์ง ์์์ต๋๋ค.
์ค์ ๋ก ๊ฒ์ ๋ ์ง ๋ช ๋ถ ํ์ ์ ๊ทธ๋ ์ด๋๋์์ผ๋ฉฐ ๋ชจ๋ ๊ฒ์ด ์ ์์ ๋๋ค. ๋น ๋ฅธ ์์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
๋ง์นจ๋ด ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์๋ํฉ๋๋ค. 2.24.0 ์๋์ผ๋ก ๋ค์ด ๊ทธ๋ ์ด๋. ํ์ง๋ง " moment" ๋ฅผ ๋ฃ์ด์ผํฉ๋๋ค
"moment" ๋์
๋ฒ์ 2.25.1์ ๋ชจ๋ '์๊ฐ'์ ์ฐพ์ ์ ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง๋ง Angular 8 ์์ฉ ํ๋ก๊ทธ๋จ์์ ํ ์คํธ ์ค์ด๋ฉฐ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
WARNING in ./node_modules/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in '/home/project/node_modules/moment/src/lib/ locale'
๋ค๋ฅธ ์ฌ๋์ด์ด ์คํจ๋ฅผ ๊ฒฝํ ํ ์ ์ด ์์ต๋๊น?
๋ํ 2.25.1์์ ๋ด๊ฐ ์ฐธ์กฐํ๋ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ๊ณ ์์ต๋๋ค.
"export 'utc' (imported as 'moment') was not found in 'moment'
"export 'max' (imported as 'moment') was not found in 'moment'
"export 'min' (imported as 'moment') was not found in 'moment'
๋๋ฅผ ์ํด ๊ทธ๊ฒ์
"moment": "2.24.0",
"moment-timezone": "^0.5.31",
์๊ฐ์ 2.29.0 ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
npm uninstall moment
npm install [email protected]
TS2307 : Angular 8์์ ๋ชจ๋ 'moment'๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
2.24 ๋ฒ์ ์ ์๋ํด๋ณด์ญ์์ค. ๋ด ํ ์คํธ๋ ์ ๋ฒ์ ์์ ์คํจํ๊ธฐ ์์ํ์ง๋ง ์ด์ ๋ฒ์ ์์๋ ๊ด์ฐฎ์ต๋๋ค.