ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Next 8 Π½Π° Next 9.
ΠΠΎΠ³Π΄Π° Ρ Π·Π°ΠΏΡΡΠΊΠ°Ρ next build
Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ, ΠΈ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ 20 ΠΌΠ°ΡΡΡΡΡΠ°ΠΌΠΈ.
ΠΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ ΠΏΠΎΠ½ΡΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Ρ, ΡΡΠΎ ΠΏΠΎΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΊ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ 8 ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π½ΠΎ Π½Π΅ Next9.
ΠΠΎΡ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΡΠ΅ΠΊΠ°. ΠΡΠ»ΠΈ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π΄Π°ΠΉΡΠ΅ ΠΌΠ½Π΅ Π·Π½Π°ΡΡ, ΠΈ Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Ρ:
<--- Last few GCs --->
[28143:0x102634000] 231190 ms: Mark-sweep 1278.7 (1441.0) -> 1263.4 (1438.5) MB, 838.4 / 0.0 ms (average mu = 0.290, current mu = 0.268) allocation failure scavenge might not succeed
[28143:0x102634000] 231308 ms: Scavenge 1278.1 (1438.5) -> 1266.6 (1440.0) MB, 8.2 / 0.0 ms (average mu = 0.290, current mu = 0.268) allocation failure
[28143:0x102634000] 231365 ms: Scavenge 1279.3 (1440.0) -> 1271.6 (1443.0) MB, 21.6 / 0.0 ms (average mu = 0.290, current mu = 0.268) allocation failure
<--- JS stacktrace --->
==== JS stack trace =========================================
0: ExitFrame [pc: 0x3547db9dbe3d]
Security context: 0x3a36ebf9e6e1 <JSObject>
1: DoJoin(aka DoJoin) [0x3a36ebf85e89] [native array.js:~87] [pc=0x3547dcd9a7d0](this=0x3a366f3826f1 <undefined>,l=0x3a368f6eb2b9 <JSArray[10]>,m=10,A=0x3a366f3828c9 <true>,w=0x3a36c3aafc69 <String[1]: />,v=0x3a366f3829a1 <false>)
2: Join(aka Join) [0x3a36ebf85ed9] [native array.js:~112] [pc=0x3547dd85bb38](this=0x3a366f3826f1 <undefined>,l=0x3a368f6...
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 0x10003ae75 node::Abort() [/usr/local/bin/node]
2: 0x10003b07f node::OnFatalError(char const*, char const*) [/usr/local/bin/node]
3: 0x1001a7ae5 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
4: 0x100572ef2 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/usr/local/bin/node]
5: 0x1005759c5 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/usr/local/bin/node]
6: 0x10057186f v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/usr/local/bin/node]
7: 0x10056fa44 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/bin/node]
8: 0x10057c2dc v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
9: 0x10057c35f v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
10: 0x10054e1e4 v8::internal::Factory::NewRawTwoByteString(int, v8::internal::PretenureFlag) [/usr/local/bin/node]
11: 0x10082784d v8::internal::Runtime_StringBuilderJoin(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
12: 0x3547db9dbe3d
[1] 28142 abort npm run build:next
ΠΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΡΡΠΎΠΈΡΡ
ΠΡΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ½ΠΈΠΌΠΊΠΈ ΡΠΊΡΠ°Π½Π°, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠ΄Π° Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΡΡΠ»Π΅Π΄ΠΈΡΡ ΡΡΠΎ Π±Π΅Π· ΡΠ΅ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
ΠΠ°, Ρ Π·Π½Π°Ρ. Π Π°Π½ΡΡΠ΅ Ρ ΠΌΠ΅Π½Ρ Π±ΡΠ»Π° ΠΊΡΡΠ° ΠΏΠ°ΠΌΡΡΠΈ Π²ΠΎΠΊΡΡΠ³ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠ°ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΡΠ΄Π°Π»ΠΈΠ» Π΅Π΅. Π Ρ ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π²ΠΎΠΊΡΡΠ³ ΡΠ°ΠΉΠ»Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΡΡΡ Π»ΠΈ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ΅ΠΊΠ°?
Π Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΎΠ½ ΡΠ΅ΠΉΡΠ°Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ·Π»Π°:
NODE_OPTIONS="--max_old_space_size=4096"
ΠΠ½ ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄ΠΎ 28 ΠΌΠ°ΡΡΡΡΡΠΎΠ², Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Ρ Π΄Π°Ρ 30 ΠΌΠ°ΡΡΡΡΡΠΎΠ² (Ρ Π½Π°Ρ Π΅ΡΡΡ 31 ΠΌΠ°ΡΡΡΡΡ), ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ 3 ΠΠ (ΠΈ Π΄Π°ΠΆΠ΅ Π±ΠΎΠ»ΡΡΠ΅). Π― Π·Π°ΠΏΡΡΠΊΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ Π½Π° ΡΡΠ΅Π΄Π½Π΅ΠΌ Π½ΠΎΡΡΠ±ΡΠΊΠ΅ Ρ 8 ΠΠ ΠΏΠ°ΠΌΡΡΠΈ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ. ΠΠΎ ΡΡΠΎ ΡΠ΄Π°Π»ΠΎΡΡ.
Π― Π½Π΅ Π·Π½Π°Ρ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ Π΄Π΅ΡΠΆΠ°ΡΡ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΠ»ΠΈ Π½Π΅Ρ.
ΠΡΠ»ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ, Π²ΠΎΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΡΡΡΠ°Π½ΠΈΡ:
ΠΡΠΎΡΠ΅ΡΡ Π²ΡΠ»Π΅ΡΠ°Π΅Ρ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΡΡΡ (Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π²).
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ·Π½Π°ΡΡ, Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅. Π― ΠΏΠΎΠΊΠ° Π·Π°ΠΊΡΠΎΡ ΡΡΠΎ.
ΠΡ ΡΠΎΠΆΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄ΠΎ Next 9 ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅Ρ Π²Π°ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Ρ Next 8 ΡΡΠΎ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.
Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² CircleCi ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° CI ΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
Exited with code 137
Hint: Exit code 137 typically means the process is killed because it was running out of memory
Hint: Check if you can optimize the memory usage in your app
Hint: Max memory usage of this container is 4284268544
according to /sys/fs/cgroup/memory/memory.max_usage_in_bytes
4 ΠΠ - ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° CircleCI, ΠΎΡΡΡΠ΄Π° ΠΈ ΠΎΡΠΈΠ±ΠΊΠ°. ΠΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ Ρ Next 9 ΠΌΡ Π΄ΠΎΡΡΠΈΠ³Π»ΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π΅Π»Π°.
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΡΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ NextJs 9.
ΠΠ· 3 ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ Π΄ΠΎ NextJs 9, Π΄Π²Π° ΠΈΠ· Π½ΠΈΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠΈ Π½Π° Elastic Beanstalk. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΎ Π²Π΅ΡΠ½ΡΡΡ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ ΡΠ΅ΠΏΠΎ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ, ΡΡΠΎΠ±Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΏΠ°ΠΌΡΡΡΡ, Π½ΠΎ ΠΌΠΎΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΡΠ΅Ρ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. Π― ΠΌΠΎΠ³Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΡΠ±ΠΎΡΠΊΡ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ Π½ΠΎΡΡΠ±ΡΠΊΠ΅, Π½ΠΎ ΠΎΠ½ Π΄Π°Π΅Ρ ΡΠ±ΠΎΠΉ ΠΏΡΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΌΠ΅ΡΠ°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π½Π΅Ρ Π²Π°ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ ΡΠ·Π½Π°Π²Π°Π΅ΠΌΠΎ (Π΄Π»Ρ ΠΌΠ΅Π½Ρ) - ΡΡΠΎ ΡΡΡΠΎΠΊΠ°:
readFile [/tmp/b0cc21aa63cece4e/.build-utils/.builder/node_modules/@now/next/dist/index.js:9555]
ΠΠΎΡ ΠΆΡΡΠ½Π°Π» ...
Aug 22 2019 01:26:51:346 | Ξ» (Lambda) page was emitted as a lambda (i.e. getInitialProps)
-- | --
Aug 22 2019 01:26:51:346 | β‘ (Static File) page was prerendered as static HTML
Aug 22 2019 01:26:51:434 | Done in 146.48s.
Aug 22 2019 01:26:51:444 | preparing lambda files...
Aug 22 2019 01:34:22:983 | <--- Last few GCs --->
Aug 22 2019 01:34:22:983 | [430:0x23f5310] 666594 ms: Mark-sweep 4089.3 (4262.1) -> 4089.3 (4261.1) MB, 3898.4 / 0.0 ms allocation failure GC in old space requested
Aug 22 2019 01:34:22:983 | [430:0x23f5310] 671097 ms: Mark-sweep 4089.3 (4261.1) -> 4089.3 (4225.6) MB, 4502.8 / 0.0 ms last resort GC in old space requested
Aug 22 2019 01:34:22:983 | [430:0x23f5310] 674990 ms: Mark-sweep 4089.3 (4225.6) -> 4089.3 (4223.1) MB, 3892.4 / 0.0 ms last resort GC in old space requested
Aug 22 2019 01:34:22:983 | <--- JS stacktrace --->
Aug 22 2019 01:34:22:983 | ==== JS stack trace =========================================
Aug 22 2019 01:34:22:983 | Security context: 0x70e9f6257c1 <JSObject>
Aug 22 2019 01:34:22:983 | 1: toString [buffer.js:611] [bytecode=0x2833662c6061 offset=31](this=0xce2ca70dbc1 <Uint8Array map = 0x6cc06836709>,encoding=0x2fb750b822d1 <undefined>,start=0x2fb750b822d1 <undefined>,end=0x2fb750b822d1 <undefined>)
Aug 22 2019 01:34:22:983 | 2: arguments adaptor frame: 0->3
Aug 22 2019 01:34:22:983 | 3: readFile [/tmp/b0cc21aa63cece4e/.build-utils/.builder/node_modules/@now/next/dist/index.js:9555] [bytecode=0x1814135ff3e1 offset=53](t...
Aug 22 2019 01:34:22:983 | FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
Aug 22 2019 01:34:22:983 | 1:
Aug 22 2019 01:34:22:984 | node::Abort() [/node8/bin/node]
Aug 22 2019 01:34:22:984 | 2:
Aug 22 2019 01:34:22:986 | 0x11e73ec [/node8/bin/node]
Aug 22 2019 01:34:22:986 | 3:
Aug 22 2019 01:34:22:986 | v8::Utils::ReportOOMFailure(char const*, bool) [/node8/bin/node]
Aug 22 2019 01:34:22:986 | 4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [/node8/bin/node]
Aug 22 2019 01:34:22:986 | 5: v8::internal::Factory::NewRawTwoByteString(int, v8::internal::PretenureFlag) [/node8/bin/node]
Aug 22 2019 01:34:22:986 | 6:
Aug 22 2019 01:34:22:986 | v8::internal::Factory::NewStringFromUtf8(v8::internal::Vector<char const>, v8::internal::PretenureFlag) [/node8/bin/node]
Aug 22 2019 01:34:22:986 | 7:
Aug 22 2019 01:34:22:987 | v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int) [/node8/bin/node]
Aug 22 2019 01:34:22:987 | 8:
Aug 22 2019 01:34:22:987 | node::StringBytes::Encode(v8::Isolate*, char const*, unsigned long, node::encoding, v8::Local<v8::Value>*) [/node8/bin/node]
Aug 22 2019 01:34:22:987 | 9:
Aug 22 2019 01:34:22:988 | 0x12070d6 [/node8/bin/node]
Aug 22 2019 01:34:22:988 | 10:
Aug 22 2019 01:34:22:988 | v8::internal::FunctionCallbackArguments::Call(void (*)(v8::FunctionCallbackInfo<v8::Value> const&)) [/node8/bin/node]
Aug 22 2019 01:34:22:988 | 11:
Aug 22 2019 01:34:22:989 | 0xb79dac [/node8/bin/node]
Aug 22 2019 01:34:22:989 | 12:
Aug 22 2019 01:34:22:989 | v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*) [/node8/bin/node]
Aug 22 2019 01:34:22:989 | 13: 0x47a70c842fd
Aug 22 2019 01:35:32:549 | done
ΠΠΎΡ ΠΌΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π²Π΅Π±-ΠΏΠ°ΠΊΠ΅ΡΠ°:
const loadConfig = require('./loadConfig');
const reNodeModules = /node_modules/;
const reScript = /\.(js|jsx|mjs)$/;
const reImage = /\.(bmp|gif|jpg|jpeg|png|svg)$/;
const reGraphql = /\.graphql?$/;
const reStyle = /\.(css|less|styl|scss|sass|sss)$/;
module.exports = (nextConfig = {}) => {
return {
...nextConfig,
webpack(config, options) {
const { webpack, isServer, dev } = options;
const staticAssetName = dev ? '[path][name].[ext]?[hash:8]' : '[name]-[hash:8].[ext]';
const publicPath = '/_next/static/';
const outputPath = `${isServer ? '../' : ''}static/`;
// eslint-disable-next-line no-param-reassign
config.resolve = {
...config.resolve,
modules: [...config.resolve.modules, './src'],
};
config.module.rules.push(
{
test: reImage,
exclude: reNodeModules,
oneOf: [
// Inline lightweight into CSS
{
issuer: reStyle,
oneOf: [
// Inline lightweight SVGs as UTF-8 encoded DataUrl string
{
test: /\.svg$/,
loader: 'svg-url-loader',
options: {
name: staticAssetName,
limit: 4096, // 4kb
publicPath,
outputPath,
},
},
// Inline lightweight as Base64 encoded DataUrl string
{
loader: 'url-loader',
options: {
name: staticAssetName,
limit: 4096, // 4kb
publicPath,
outputPath,
},
},
],
},
// Or return public URL to image resource
{
loader: 'file-loader',
options: {
name: staticAssetName,
publicPath,
outputPath,
},
},
],
}, // Rules for GraphQL
{
test: reGraphql,
exclude: reNodeModules,
use: [
{
loader: 'webpack-graphql-loader',
options: {
removeUnusedFragments: true,
output: 'document',
},
},
],
},
{
exclude: [reNodeModules, reScript, reImage, reGraphql, /\.json$/, /\.txt$/, /\.md$/],
loader: 'file-loader',
options: {
name: staticAssetName,
publicPath,
outputPath,
},
},
);
const appConfig = loadConfig();
if (isServer && dev) {
console.info(appConfig);
}
config.plugins.push(
new webpack.DefinePlugin({
__DEV__: dev,
__SERVER__: isServer,
__BROWSER__: !isServer,
__CONFIG__: JSON.stringify(appConfig),
}),
);
if (typeof nextConfig.webpack === 'function') {
return nextConfig.webpack(config, options);
}
return config;
},
};
};
@timneutkens Π£ ΠΌΠ΅Π½Ρ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Next.js 9. ΠΡΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±ΡΡΡ ΠΈΠ·-Π·Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΡ ΡΠΏΠΎΠΌΡΠ½ΡΠ»ΠΈ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΌΠΎΡ Π²Π΅ΡΠΊΡ.
https://github.com/stramel/styled-icons/tree/ms/add-material-variants
ΠΠΎΡ Π½Π΅ΡΠ΄Π°ΡΠ½Π°Ρ ΡΠ±ΠΎΡΠΊΠ°: https://travis-ci.org/jacobwgillespie/styled-icons/builds/582987078
Π£ Π’ΡΡΠ²ΠΈΡΠ° Π΅ΡΡΡ Π½Π°Π±ΠΎΡ NODE_OPTIONS=--max-old-space-size=4096
@timneutkens ΠΌΠΎΠΆΠ΅Ρ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΡΠ½ΠΎΠ²Π° ΠΎΡΠΊΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠ΅ΠΏΠΎ?
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ [email protected].
Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π»ΠΈ ΡΠ²ΠΎΠΈΡ
ΠΏΡΠ΅Π΄Π΅Π»ΠΎΠ² ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΈΡΡΠ΅ΡΠΏΡΠ²Π°ΡΡ ΠΏΠ°ΠΌΡΡΡ. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ±ΠΎΡΠΊΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ΅ΡΠ΅Π· NODE_OPTIONS=--max-old-space-size=4096
.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΡΡ Π½Π°ΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
// next.config.js
module.exports = {
experimental: { granularChunks: true }
}
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @Timer , Ρ granularChunks
.
Π’Π°ΠΊΠΆΠ΅, ΡΡΠΎΠ±Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» 8192 Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° ΠΌΠΎΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, Π½ΠΎ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ. Π― Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠ½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠΎΠ±ΡΠ°ΡΡ Π΅Π³ΠΎ.
Π― ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π» Π½Π° ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΡΡΠ°ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ Π·Π°ΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ ΠΈΠ½ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²ΡΡ ΠΎΠ΄ΠΈΠ» Π½ΠΎΠ²ΡΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²ΡΠΏΡΡΠΊ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΡΠ΄ΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, Π²Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅ ΡΠ΅ΡΡ ΠΏΠ°ΠΌΡΡΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Π½ΠΈΠ±ΡΠ΄Ρ Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅?
ΠΡΠΎΡ Π½ΠΎΠ²ΡΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²ΡΠΏΡΡΠΊ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ ΠΏΡΠ΅Π΄Π΅Π»Π° ΠΏΠ°ΠΌΡΡΠΈ ΡΠ·Π»Π°. Π ΡΠ΅ΠΌ ΠΏΡΠΈΡΠΈΠ½Π° ΡΠ°ΠΊΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°Π½ΡΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΎ?
@Timer Π― ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ granularChunks
Π½ΠΎ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΠ°ΠΆΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ Ρ Π½Π°Π±ΠΎΡΠΎΠΌ 8192.
Π£ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π³ΡΠ°Π½ΡΠ»ΡΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² https://github.com/stramel/styled-icons/tree/ms/granular-chunks
ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²,
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½Π°ΡΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π², ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ±ΠΎΡΠΊΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅ΠΉΡΠ°Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ», ΡΡΠΎ Π² Π½Π°ΡΠ΅ΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π° withSourceMaps
:
"@zeit/next-source-maps": "^0.0.4-canary.1"
ΠΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ», ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ hidden-source-map
ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π₯ΠΎΡΡ Ρ Π½Π΅ Π·Π½Π°Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ NextJS 8.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄ΠΎ v9 ... Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ macbook pro 2015 Π³ΠΎΠ΄Π°, ΠΎΠ½ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΡΡΡΠ°Π²Π°Π», ΠΈ Ρ Π·Π°ΠΏΡΡΠΊΠ°Π» Π½Π° Π½Π΅ΠΌ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΠΆΠ΅Π»ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Ρ Π·Π°ΠΏΡΡΠΊΠ°Ρ ΡΠ²ΠΎΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΡΠΌΠΎΠ·ΠΈΡ ΠΈ Π²ΡΠ΅ ΠΌΠ°ΡΡΠΎΠ²ΠΎ ΡΠΎΡΠΌΠΎΠ·ΠΈΡ.
ΠΠ±ΡΡΠ½ΠΎ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 10 ΠΌΠΈΠ½ΡΡ ΠΈΠ»ΠΈ ΠΎΠΊΠΎΠ»ΠΎ ΡΠΎΠ³ΠΎ , ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π±ΡΠ» ΠΏΠ΅ΡΠ²ΡΠΉ Π΄Π΅Π½Ρ Ρ ΠΏΡΡΠ°Π»ΡΡ ΡΠΏΠΎΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π· Π½Π΅Π³ΠΎ, ΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΡ ΡΠ°ΡΠΎΠ² ΡΠ°Π±ΠΎΡΡ Π² Dev Ρ
ΠΎΠ΄Ρ Ρ ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΠΎΡ ΠΆΠ΅ JavaScript heap out of memory
, ΡΡΠΎ Π»ΡΠ΄ΠΈ ΡΠΎΠΎΠ±ΡΠΈΠ»ΠΈ ΠΎ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠ΄Π΅-ΡΠΎ Π·Π΄Π΅ΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΠ΅ΡΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ
Π― ΡΠΎΠΆΠ΅ ΡΠ°ΠΊ Π΄ΡΠΌΠ°Ρ. Π£ ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ²Π΅ΠΆΠΈΠΉ MacBook, ΠΈ Ρ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΊΠ°ΠΊ ΠΌΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡ Π΄ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ 9, ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠ°Π» ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ½ΠΎΠ³Π΄Π° ΡΡΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π΄ΠΎ 20 ΡΠ΅ΠΊΡΠ½Π΄.
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π΄Π°ΠΆΠ΅ ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ NODE_OPTIONS = 16384 Π½Π° ΠΌΠΎΠ΅ΠΌ MacBook Pro Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΡΡ 32 ΠΠ, Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ°.
ΠΡΡΠ½Π°Π»Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ:
==== JS stack trace =========================================
0: ExitFrame [pc: 0x335bafb5be3d]
Security context: 0x0fe28be1e6e9 <JSObject>
1: createPrinter [0xfe25fe2c0b9] [/Users/my-name/my-project/node_modules/typescript/lib/typescript.js:~86713] [pc=0x335bb12e86f3](this=0x0fe280c03329 <Object map = 0xfe2df152cc9>,printerOptions=0x0fe2f39e8ae1 <Object map = 0xfe20ac205a9>,handlers=0x0fe28e1026f1 <undefined>)
2: arguments adaptor frame: 1->2
3: reportImplicitAny(aka reportImpli...
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 0x10003d035 node::Abort() [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
2: 0x10003d23f node::OnFatalError(char const*, char const*) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
3: 0x1001b8e15 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
4: 0x100586d72 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
5: 0x100589845 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
6: 0x1005856ef v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
7: 0x1005838c4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
8: 0x10059015c v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
9: 0x1005901df v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
10: 0x10055fb24 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
11: 0x1007e7e04 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/opt/nvm/versions/node/v10.16.3/bin/node]
12: 0x335bafb5be3d
13: 0x335bb12e86f3
14: 0x335bafb0a5c3
@timneutkens, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΡΡΠΎΡ Π²ΡΠΏΡΡΠΊ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ»ΠΈ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ. ΠΡΠ° ΡΡΠ΅ΡΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ°Π½Π½ΡΠ΅ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ HMR Π΄Π΅Π»Π°ΡΡ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΠΌ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΎΡΠ½ΠΈΠΌΠ°ΡΡ Ρ Π½Π°Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»Ρ.
Π― ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ Next 4.2.3.
ΠΠΎΠ³Π΄Π° Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ» Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΎΠ½ Π½Π΅ ΡΠ΄Π°Π»ΡΡ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ:
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
Π‘Π±ΠΎΠΉ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΠ» ΠΌΠ΅Π½Π΅Π΅ ΡΠ΅ΠΌ ΡΠ΅ΡΠ΅Π· Π΄Π΅ΡΡΡΡ ΠΌΠΈΠ½ΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΡΠΊΠΎΡΠΈΡΡ, Π·Π°ΠΏΡΡΡΠΈΠ² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
Π― Π²Π΅ΡΠ½ΡΠ»ΡΡ ΠΊ Π²Π΅ΡΡΠΈΠΈ 8.1.0 ΠΈ Π½Π΅ ΠΌΠΎΠ³Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΡ - Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΠΉ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ (ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΡΡΡΠ°Π½ΠΈΡ).
ΠΠ°, ΠΌΡ ΡΠΎΠΆΠ΅ ΡΡΠΎ Π²ΠΈΠ΄ΠΈΠΌ ...
ΠΠΎΡΠ° ΠΎΡΠΊΡΡΡΡΡΡ, Π΄ΡΠΌΠ°Ρ, @timneutkens
Π― ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΡΠ°ΠΊΠΆΠ΅ Π½Π° [email protected] Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ
ΠΈ ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡ bootstrap.min.css Ρ ΠΏΠΎΠΌΠΎΡΡΡ require / import ΡΠ΅ΡΠ΅Π· js ΠΈΠ»ΠΈ @import ΡΠ΅ΡΠ΅Π· css / scss. ΠΌΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡΡ nodejs Π±ΡΠ»Π° ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π° ΠΏΠΎΡΠ»Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ Ρ cdn ΡΠ΅ΡΠ΅Π· Π²
Ρ next / head ΠΏΠ°ΠΌΡΡΡ, ΠΏΠΎΡ ΠΎΠΆΠ΅, Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΉ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.<Head>
<meta key="viewport" name="viewport" content="initial-scale=1.0, width=device-width" />
<link key="bootstrapcdn" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" ... />
...
</Head>
ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ»Π° Π² ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ css Π² next-css. ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΠΎΠ½ΠΈΠΆΠ°Ρ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π΄ΠΎ 8.1.0, Ρ ΠΌΠ΅Π½Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ. https://github.com/zeit/next-plugins/issues/541. ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΡΡΠΎΡ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ (https://github.com/zeit/next-plugins/issues/392#issuecomment-475845330). ΠΈ Π΅ΡΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ ΡΠ½ΠΎΠ²Π°.
// next.config.js
const withCSS = require('@zeit/next-css');
function HACK_removeMinimizeOptionFromCssLoaders(config) {
console.warn(
'HACK: Removing 'minimize' option from 'css-loader' entries in Webpack config',
);
config.module.rules.forEach(rule => {
if (Array.isArray(rule.use)) {
rule.use.forEach(u => {
if (u.loader === 'css-loader' && u.options) {
delete u.options.minimize;
}
});
}
});
}
module.exports = withCSS({
webpack(config) {
HACK_removeMinimizeOptionFromCssLoaders(config);
return config;
},
});
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄ΠΎ Next 9.1.3. Π― ΡΠΎΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ next-css, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΅Π³ΠΎ ΡΠ±ΠΎΠΉ?
ΠΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ²Π΅ΡΠ΅Π½, Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΡΡΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ , Π½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΠΉ Π²Π°ΠΌΠΈ ΡΠ΅ΡΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½. Π£ ΠΌΠ΅Π½Ρ Π±ΡΠ»ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠ³Π»ΠΎ Π½Π°ΠΉΡΠΈ, ΠΈ ΠΎΠ½ΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»ΠΎ Π΅Π³ΠΎ ΠΈΡΠΊΠ°ΡΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΡΠ΄Π°Π»ΠΎ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΡΡΠΈ. Π― ΡΠ΄Π°Π»ΠΈΠ» ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎΠ± ΡΡΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ, ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π°.
ΠΠ½Π΅ ΡΠΎΠΆΠ΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ, ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ @lloan ΠΏΠΎΠΌΠΎΠ³ ΠΎΡΠ»Π°Π΄ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ ΡΡΡΠ»Π°Π»ΡΡ Π½Π° /public/manifest.json
ΠΊΠ°ΠΊ Π½Π° ΡΠ΅Π³ meta
Π² <head/>
, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎΡ ΡΠ΅ΡΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°Π» Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΠΈ ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°Π»ΠΎ ΡΡΠ΅ΡΠΊΡ ΠΏΠ°ΠΌΡΡΠΈ.
Π£ ΠΌΠ΅Π½Ρ Π±ΡΠ» ΡΡΠΎΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ icon.png
Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ
<Head>
<link rel="icon" href="/static/icon.png" type="image/png" />
</Head>
ΠΡΠΏΡΠ°Π²ΠΈΠ² ΠΈΠΌΠΏΠΎΡΡ Π·Π½Π°ΡΠΊΠ°, Ρ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΡ ΡΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ
<Head>
<link rel="icon" href="/icon.png" type="image/png" />
</Head>
ΠΠ°ΠΊ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ https://github.com/zeit/now/issues/3307, Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΡΠ°ΠΊ Ρ ΠΏΠ°ΠΏΠΊΠΎΠΉ static
/ public
.
Π£ ΠΌΠ΅Π½Ρ ΡΠΎΠΆΠ΅ Π±ΡΠ»Π° ΡΡΠ° ΠΏΡΠΎΠ±Π΅ΠΌΠ°. ΠΠ°ΠΊ ΡΠΊΠ°Π·Π°Π» ΠΡΠΊΠΈΠ½ΠΎΡΠΈΡΠ°, Ρ Π·Π°Π³Π»ΡΠ½ΡΠ» Π² ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠ°ΠΏΠΊΡ. Π― ΡΠ΄Π°Π»ΠΈΠ» ΠΏΠ°ΠΏΠΊΡ Ρ 674 ΡΠ°ΠΉΠ»Π°ΠΌΠΈ json (Π΄Π»Ρ ΡΠ΅Π»Π΅ΠΉ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ) ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ public/static/
. Π‘ ΡΠ΅Ρ
ΠΏΠΎΡ Ρ ΠΌΠ΅Π½Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½Π°ΡΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π², ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ±ΠΎΡΠΊΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅ΠΉΡΠ°Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ», ΡΡΠΎ Π² Π½Π°ΡΠ΅ΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°
withSourceMaps
:
"@zeit/next-source-maps": "^0.0.4-canary.1"
ΠΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ», ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
hidden-source-map
ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π₯ΠΎΡΡ Ρ Π½Π΅ Π·Π½Π°Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ NextJS 8.
Π£ ΠΌΠ΅Π½Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄ΠΎ "@zeit/next-source-maps": "^0.0.4-canary.1"
. ΠΡΠ±ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ ΠΌΠ½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ
ΠΊΠ°ΡΡ?
@focux ΠΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΡΡΡ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΏΠ°Π»ΠΎ.
Π Π·Π΄Π΅ΡΡ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠ°ΠΆΠ΅ΡΡΡ, Π²ΡΠ»Π΅ΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° Π² ΡΠ±ΠΎΡΠΊΠ΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²Π΅Π»ΠΈΠΊ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π» ΡΡΠΎ-ΡΠΎ ΠΈΠ· Typescript, ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° Π² ΡΠ±ΠΎΡΠΊΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ»ΡΡ Π΄ΠΎ 2,41 ΠΌΠ±. ΠΠ°ΡΠ΅ΠΌ ΠΌΠΎΠΉ CI Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΡΡ 2 ΠΠ Π½Π°ΡΠ°Π» Π²ΡΠ»Π΅ΡΠ°ΡΡ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ ΡΠ΄Π°Π»ΠΈΠ» ΠΈΠΌΠΏΠΎΡΡ Typescript, ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΡΡ Π΄ΠΎ 100 ΠΠ, ΠΈ ΠΎΠ½ ΡΠ½ΠΎΠ²Π° Π·Π°ΡΠ°Π±ΠΎΡΠ°Π».
Nextjs 9 Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° Π±ΡΠ» ΠΎΡΠ΅Π½Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ Π² CI. Π‘Π±ΠΎΡΠΊΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΈ Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΡΠΎΠ±ΡΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ ... ΠΏΡΠΎΡΡΠΎ ΡΠ΅Π°Π³ΠΈΡΡΠΉΡΠ΅ Π½Π° Π²Π΅ΡΠΈ, ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π·Π΄Π΅ΡΡ ΠΈ ΡΠ°ΠΌ. Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ CI: s Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Ρ node / express, Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ΄ΡΠΎΠΌ dotnet, php ΠΈ Ρ. Π., ΠΡΠ΅ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ 1 ΠΠ ΠΏΠ°ΠΌΡΡΠΈ Π² CI ΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±ΡΡΡΡΠΎ. Π― Π½Π΅ Π·Π½Π°Ρ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΌΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ?
ΠΠ΄Π΅ΡΡ ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. Mac OS / ΠΠ΅ΠΉΡΡΠ²ΠΈΡ Github. ΠΠΈΠΊΠ°ΠΊΠΈΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π·Π΄Π΅ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ, Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ Π½Π°ΠΉΡΠΈ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΡΠ·Π°Π½Ρ, Π½ΠΎ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΎΠ΅ΠΊΡ ΡΡΡΠΎΠΈΡΡΡ (ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅) Π² Zeit Now.
Π₯ΠΎΡΠ΅Π» Π±Ρ ΠΏΠΎΠΌΠΎΡΡ, Π΅ΡΠ»ΠΈ Π±Ρ Π·Π½Π°Π», ΠΊΠ°ΠΊ.
Π’Π°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π΄Π΅ΡΡ (MacOS). Π― ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»:
Π‘ΠΎΠΎΠ±ΡΠΈΡΠ΅ ΠΌΠ½Π΅, Π΅ΡΠ»ΠΈ Ρ ΠΌΠΎΠ³Ρ ΠΏΠΎΠΌΠΎΡΡ. ΠΠΎΡ ΠΆΡΡΠ½Π°Π» ΠΎΡΠΈΠ±ΠΎΠΊ ...
<--- Last few GCs --->
[83442:0x102804000] 123060 ms: Scavenge 1371.3 (1422.4) -> 1370.7 (1422.9) MB, 8.3 / 0.0 ms (average mu = 0.120, current mu = 0.058) allocation failure
[83442:0x102804000] 123066 ms: Scavenge 1371.7 (1422.9) -> 1370.9 (1423.9) MB, 4.1 / 0.0 ms (average mu = 0.120, current mu = 0.058) allocation failure
[83442:0x102804000] 123071 ms: Scavenge 1371.7 (1423.9) -> 1371.0 (1424.4) MB, 3.9 / 0.0 ms (average mu = 0.120, current mu = 0.058) allocation failure
<--- JS stacktrace --->
==== JS stack trace =========================================
0: ExitFrame [pc: 0x3b944125be3d]
Security context: 0x164494d1e6e9 <JSObject>
1: SourceMapConsumer_allGeneratedPositionsFor [0x16448b97d331] [/Users/alberto.iglesias/Coding/iteisa/projects/ceoe-gis/node_modules/@babel/core/node_modules/source-map/lib/source-map-consumer.js:~178] [pc=0x3b944240968c](this=0x1644193fb679 <BasicSourceMapConsumer map = 0x16448ea8a239>,aArgs=0x16447d082249 <Object map = 0x16448ea98939>)
2: /* anonym...
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 0x10003d035 node::Abort() [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
2: 0x10003d23f node::OnFatalError(char const*, char const*) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
3: 0x1001b8e15 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
4: 0x100586d72 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
5: 0x100589845 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
6: 0x1005856ef v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
7: 0x1005838c4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
8: 0x10059015c v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
9: 0x1005901df v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
10: 0x10055fb24 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
11: 0x1007e7e04 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/Users/alberto.iglesias/.nvm/versions/node/v10.16.3/bin/node]
12: 0x3b944125be3d
13: 0x3b944240968c
Abort trap: 6
SourceMapConsumer_allGeneratedPositionsFor
ΠΡΠΌΠ°Ρ, ΡΡΠΎ Π²ΠΈΠ½ΠΎΠ²Π°Ρ. Π ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΅ΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ
ΠΊΠ°ΡΡ. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΡΠΎΡ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΊΠ°ΡΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΌΡΡΠΈ.
Π£ ΠΌΠ΅Π½Ρ Π²ΡΠ΅ Π΅ΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΊΠ»ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°ΡΡΡ
Π‘Π΅ΡΠ³Π΅ΠΉ.
24 Π΄Π΅ΠΊΠ°Π±ΡΡ 2019 Π³ΠΎΠ΄Π° Π² 10:01 ΠΏΠΎ ΠΡΠΈΠ½Π²ΠΈΡΡ Emanuele [email protected] Π½Π°ΠΏΠΈΡΠ°Π»:
SourceMapConsumer_allGeneratedPositionsFor Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ Π²ΠΈΠ½ΠΎΠ²Π°Ρ. Π ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΅ΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠ°ΡΡ. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΡΠΎΡ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΊΠ°ΡΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΌΡΡΠΈ.
-
ΠΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ.
ΠΡΠ²Π΅ΡΡΡΠ΅ Π½Π° ΡΡΠΎ ΠΏΠΈΡΡΠΌΠΎ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° GitHub ΠΈΠ»ΠΈ ΠΎΡΠΊΠ°ΠΆΠΈΡΠ΅ΡΡ ΠΎΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ .
ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Β«Π― Π²ΡΠ΅ Π΅ΡΠ΅ ΠΈΡΠΏΡΡΡΠ²Π°Ρ ΡΡΠΎΒ» Π½Π΅ ΡΠ΅ΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ΅ Π»ΡΠ΄ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΏΠΎΠ»Π½ΡΠΌ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, ΠΈΠ½Π°ΡΠ΅ Π²Π°Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅, Π½ΠΎ Π±Π΅Π· Π²ΡΡΠΊΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΏΠΈΠ½Π³ΠΎΠ²Π°ΡΡ Π²ΡΠ΅Ρ , ΠΊΡΠΎ Π΅Π΅ Π·Π°ΡΡΠΎΠ½ΡΠ».
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Π°ΡΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ ematipico, Π΄Π΅Π»ΠΈΡΡΡΡ Π²Π΅ΡΠ°ΠΌΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π½Π° ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. Π‘ΠΊΠ°Π·Π°ΡΡ Β«Π£ ΠΌΠ΅Π½Ρ Π²ΡΠ΅ Π΅ΡΠ΅ Π΅ΡΡΡ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Β» Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΠΎ.
ΠΡΡΡ Π»ΠΈ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ? ΠΠΎΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ CI / CD Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° 1 ΠΠ ΠΠΠ£.
Π¨Π°Π³ΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ @timneutkens ΡΠΊΠ°Π·Π°Π½Ρ Π² ΡΡΠΎΠΌ Π·Π°ΠΊΡΡΡΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅:
https://github.com/zeit/next.js/issues/9442#issuecomment -554839437
ΠΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ
Π‘Π²ΡΠ·Π°Π½Π½Π°Ρ Ρ ΡΡΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°:
ΠΡΠΎΡΡΠΎ ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΊΠΎΠΌΡ-ΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ.
Π£ ΠΌΠ΅Π½Ρ Π±ΡΠ»Π° Π½Π΅Ρ
Π²Π°ΡΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ, Π° Π·Π°ΡΠ΅ΠΌ Ρ ΡΠ·Π½Π°Π», Π² ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅:
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π°, Π΅ΡΠ»ΠΈ const Icon
ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ undefined
ΠΊΠΎΠ΄ ΠΏΡΠΎΡΡΠΎ Π²Ρ
ΠΎΠ΄ΠΈΡ Π² Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ», ΠΏΡΠΎΠ²Π΅ΡΡΡ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.
const iconMapping = {
"flash-outline": FlashOutline,
};
export const Icon = ({ name }) => {
const Icon = iconMapping[name];
return <Icon />;
}
ΠΡΠ»ΠΈ Ρ Π΄ΠΎΠ±Π°Π²Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, Π΅ΡΠ»ΠΈ const Icon
Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ, Ρ ΠΈΠ·Π±Π°Π²Π»ΡΡΡ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅Ρ
Π²Π°ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ.
...
const Icon = iconMapping[name];
if (!Icon) return null;
return <Icon />;
}
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ ΠΈ ΡΠΎ ΠΌΠ½ΠΎΠΉ, Π½ΠΎ ΠΏΠΎΡΠΎΠΌ Ρ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΡΡΠΎΠ³ΠΎ Π±ΡΠ»Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠ°:
const Button = ({ children }) => {
// BUG: the button should be lower case (the HTML input)
// instead of CamelCase (an undefined component)
return <Button>{children}</Button>
}
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Next.js Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΌΡ Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ.
@timneutkens , Ρ ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ (9.3.5). Π― ΡΠΎΠ·Π΄Π°Π» ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΡΡ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ.
ΠΡΠ»Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ CricleCI ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌΠΈ ΠΊΠ°ΡΡΠ°ΠΌΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ next-source-maps
NODE_OPTIONS="--max_old_space_size=4096"
ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, Π½ΠΎ Π½Π° CircleCI Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΊΠ»Π°ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² https://circleci.com/docs/2.0/configuration-reference/#resource_class Π΄ΠΎ large
ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΡΡΠΎΠ±Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
Π― Π½Π°ΡΠ°Π» ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ 9.3.6 ΡΠ΅Π³ΠΎΠ΄Π½Ρ:
<--- Last few GCs --->
[66325:0x108008000] 17639 ms: Mark-sweep 1936.2 (2071.4) -> 1923.6 (2073.4) MB, 283.4 / 0.0 ms (average mu = 0.157, current mu = 0.048) allocation failure scavenge might not succeed
[66325:0x108008000] 17937 ms: Mark-sweep 1938.1 (2073.4) -> 1925.4 (2075.4) MB, 285.8 / 0.0 ms (average mu = 0.108, current mu = 0.042) allocation failure scavenge might not succeed
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 0x0fb9ac667d09 <JSObject>
0: builtin exit frame: stringify(this=0x0fb9ac6598a9 <Object map = 0xfb921b01449>,0x0fb958e804d1 <undefined>,0x0fb958e804d1 <undefined>,0x0fb910180ec1 <Object map = 0xfb9d8491399>,0x0fb9ac6598a9 <Object map = 0xfb921b01449>)
1: arguments adaptor frame: 1->3
2: callAsync [0xfb9320a6cf9] [0x0fb958e804d1 <undefined>:~1] [pc=0x1aa09fe84627](this=0x0fb9320a6909 <Hook map = 0xfb9d8495179>...
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
...
ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ ΠΏΡΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ paths
Π² tsconfig.json
ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π² # 12280
ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅ Π΄ΡΡΠ³Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π°
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Ρ 9.0.5 Π΄ΠΎ 9.3.6.
Creating an optimized production build ..
<--- Last few GCs --->
[1600:0000020DB9FFEBE0] 26245 ms: Mark-sweep 1958.0 (2080.3) -> 1945.0 (2081.5) MB, 266.4 / 0.0 ms (average mu = 0.179, current mu = 0.077) allocation failure scavenge might not succeed
[1600:0000020DB9FFEBE0] 26530 ms: Mark-sweep 1959.9 (2082.0) -> 1947.2 (2083.8) MB, 265.9 / 0.0 ms (average mu = 0.127, current mu = 0.068) allocation failure scavenge might not succeed
<--- JS stacktrace --->
==== JS stack trace =========================================
0: ExitFrame [pc: 00007FF77B4D4DDD]
Security context: 0x00e7d00c08d1 <JSObject>
1: /* anonymous */(aka /* anonymous */) [000002BB3E5CAA29] [C:\Users\...\node_modules\enhanced-resolve\lib\UnsafeCachePlugin.js:~27] [pc=00000147695447FC](this=0x00d9404004b1 <undefined>,0x001a9e083681 <Object map = 000003D51551D3A9>,0x001a9e0838d9 <Object map = 000003D515521AE9>,0x001a9e083979 ...
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 00007FF77A8D363F napi_wrap+128063
2: 00007FF77A872836 v8::base::CPU::has_sse+35142
3: 00007FF77A8734F6 v8::base::CPU::has_sse+38406
4: 00007FF77B089F4E v8::Isolate::ReportExternalAllocationLimitReached+94
5: 00007FF77B072021 v8::SharedArrayBuffer::Externalize+833
6: 00007FF77AF3E57C v8::internal::Heap::EphemeronKeyWriteBarrierFromCode+1436
7: 00007FF77AF497D0 v8::internal::Heap::ProtectUnprotectedMemoryChunks+1312
8: 00007FF77AF462F4 v8::internal::Heap::PageFlagsAreConsistent+3204
9: 00007FF77AF3BB13 v8::internal::Heap::CollectGarbage+1283
10: 00007FF77AF3A184 v8::internal::Heap::AddRetainedMap+2452
11: 00007FF77AF5C734 v8::internal::Factory::NewInternalizedStringImpl+132
12: 00007FF77AD9C7FD v8::internal::DescriptorArray::Allocate+4941
13: 00007FF77ADAD0C5 v8::internal::StringTable::LookupString+373
14: 00007FF77AAAF356 v8::internal::Factory::InternalizeName+54
15: 00007FF77ACAB0BE v8::internal::Runtime::GetObjectProperty+9662
16: 00007FF77B4D4DDD v8::internal::SetupIsolateDelegate::SetupHeap+546637
17: 00000147695447FC
ΠΡΡΡ ΠΈΠ΄Π΅ΠΈ?
@szaza, ΠΌΠΎΠΆΠ΅ΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ next@canary
, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π΅ΡΠΎΡΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ - ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ Π·Π΄Π΅ΡΡ: https://github.com/zeit/next.js/issues/12280
Π₯ΠΎΡΠΎΡΠΎ, ΠΏΠΎΡΠ»Π΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ node_modules
ΠΈ ΠΏΠ΅ΡΠ΅ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΊΠ°Π½Π°ΡΠ΅Π΅ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Ρ ΠΌΠ΅Π½Ρ Π΄ΡΡΠ³Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°: Cannot find module 'next-server/dist/server/next-server'.
. ΠΠ°ΠΌ ΡΡΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π·Π½Π°ΠΊΠΎΠΌΡΠΌ?
Π, Ρ ΠΏΠΎΠ½ΡΠ», ΠΎΠ½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ Π² import Server from "next/dist/next-server/server/next-server";
.
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π°ΡΡ ΠΏΠΎΠΌΠΎΡΡ!
@szaza, ΠΊΠ°ΠΊ Π²Ρ Π² ΠΈΡΠΎΠ³Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ? ΠΡΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ? ΠΠΎΠ»Π°Π³Π°Ρ, Π²Ρ Ρ
ΠΎΡΠ΅Π»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ 'next'
?
Π― ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π΄ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π½Π° TypeScript. ΠΠ°ΡΡΡΠΎΠ΅Π½ΠΎ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΠ Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠ°ΡΠΏΠΎΡΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ Π²Ρ ΠΎΠ΄Π°. ΠΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
import Server from "next-server/dist/server/next-server";
...
export const initPassport = (
server: Express,
app: Server,
authStrategies: string[]
) => {
...
return app.render(req, res, AuthRoutes.LOGIN_PAGE);
...
}
ΠΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Ρ 9.0.5 Π΄ΠΎ 9.3.7-canary.0 ΡΠΈΠΏ Server
Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ ΠΈΠ· next-server/dist/...
, Π½ΠΎ ΠΈΠ· ΠΏΡΡΠΈ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅.
Π£ ΠΌΠ΅Π½Ρ Π±ΡΠ»Π° ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΠ°, ΠΊΠΎΠ³Π΄Π° Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» Π²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΡΠ²ΠΎΠ΅ΠΌ package.json. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ NextJS 9.2.2 Ρ @ zeit / next-css Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅Ρ Π²Π°ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ»ΠΈ ΠΎΠ½ΠΈ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΡΡ Ρ NextJS.
ΠΠΎΡ ΡΠ΅ΠΊΡΡΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° -
{
"dependencies": {
"@zeit/next-css": "^1.0.1",
"axios": "^0.19.2",
"body-parser": "^1.19.0",
"compression": "^1.7.4",
"cookie-parser": "^1.4.4",
"cookie-session": "^1.4.0",
"express": "^4.17.1",
"helmet": "^3.21.3",
"json-server": "^0.16.1",
"morgan": "^1.9.1",
"next": "^9.2.2",
"passport": "^0.4.1",
"passport-local": "^1.0.0",
"passport-strategy": "^1.0.0",
"prop-types": "^15.7.2",
"react": "^16.13.0",
"react-dom": "^16.13.0",
"react-mathjax2": "0.0.2",
"shaka-player": "^2.5.10",
"styled-components": "^5.0.1"
},
"devDependencies": {
"@babel/cli": "^7.8.4",
"@babel/core": "^7.9.0",
"@babel/preset-env": "^7.8.6",
"@babel/preset-react": "^7.8.3",
"babel-jest": "^25.1.0",
"babel-plugin-module-resolver": "^4.0.0",
"babel-plugin-styled-components": "^1.10.7",
"enzyme": "^3.11.0",
"enzyme-adapter-react-16": "^1.15.2",
"jest": "^25.1.0",
"react-test-renderer": "^16.13.0"
}
}
Π― ΡΡΠ·ΠΈΠ» ΡΠ²ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ https://github.com/google/schema-dts. ΠΠΎΠ³Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΈΠ· ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Next, ΡΠ±ΠΎΡΠΊΠ° ΡΠ°ΠΊ ΠΈ Π½Π΅ Π±ΡΠ»Π° Π·Π°Π²Π΅ΡΡΠ΅Π½Π°, ΡΠ°Π½Π°ΡΡ Macbook Π²ΡΡ ΠΎΠ΄ΠΈΠ»ΠΈ Π½Π° ΠΏΠΎΠ»Π½ΡΡ ΠΌΠΎΡΠ½ΠΎΡΡΡ ΠΈ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ Π²ΡΠΏΠ»ΡΠ½ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ json-ΡΠ°ΠΉΠ» ΠΎΡΡΠ΅ΡΠ° OOM Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π― ΠΎΡΠ»Π°Π΄ΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ΄Π°Π»ΠΈΠ² Π²ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ, ΠΊΡΠΎΠΌΠ΅ ΠΎΠ΄Π½ΠΎΠΉ, ΠΈΠ· pages/
ΠΈ ΡΠ΄Π°Π»ΠΈΠ² ΠΊΠΎΠ΄ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π²Π΅ΡΠ½ΡΠ» ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠΌΡ, ΠΊΡΠΎ ΠΏΠΎΠΏΠ°Π΄Π΅ΡΡΡ Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ thread
ΠΡΠ»Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ CricleCI ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ ΠΊΠ°ΡΡΠ°ΠΌΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
next-source-maps
NODE_OPTIONS="--max_old_space_size=4096"
ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, Π½ΠΎ Π½Π° CircleCI Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΊΠ»Π°ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² https://circleci.com/docs/2.0/configuration-reference/#resource_class Π΄ΠΎlarge
ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΡΡΠΎΠ±Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ Ρ Π½Π°Ρ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ π
Π Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Next.js (v9.3.6) ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½Π°Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Π½Π΅Ρ
Π²Π°ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΊΡΡΠΈ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°), Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° NODE_OPTIONS="--max_old_space_size=4096"
ΠΏΠΎΠΌΠΎΠ³Π°Π»Π° Π΄Π»Ρ Node 10 ΠΈΠ»ΠΈ, Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎ, Π½Π° Π£Π·Π΅Π» 12 ΠΈ Π²ΡΡΠ΅, Π²Ρ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΠ΅ΡΡ ΠΎΠ± ΡΡΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ (ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Linux afaik).
ΠΡΠΎΡΡΠΎ ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΊΠΎΠΌΡ-ΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ.
Π£ ΠΌΠ΅Π½Ρ Π±ΡΠ»Π° Π½Π΅Ρ Π²Π°ΡΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ, Π° Π·Π°ΡΠ΅ΠΌ Ρ ΡΠ·Π½Π°Π», Π² ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅:Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π°, Π΅ΡΠ»ΠΈ
const Icon
ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡundefined
ΠΊΠΎΠ΄ ΠΏΡΠΎΡΡΠΎ Π²Ρ ΠΎΠ΄ΠΈΡ Π² Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ», ΠΏΡΠΎΠ²Π΅ΡΡΡ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.const iconMapping = { "flash-outline": FlashOutline, }; export const Icon = ({ name }) => { const Icon = iconMapping[name]; return <Icon />; }
ΠΡΠ»ΠΈ Ρ Π΄ΠΎΠ±Π°Π²Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, Π΅ΡΠ»ΠΈ
const Icon
Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ, Ρ ΠΈΠ·Π±Π°Π²Π»ΡΡΡ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅Ρ Π²Π°ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ.... const Icon = iconMapping[name]; if (!Icon) return null; return <Icon />; }
ΠΠ°ΠΊ Π²Ρ Π²ΡΡΡΠ½ΠΈΠ»ΠΈ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° Π²ΡΠ·Π²Π°Π» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ?
ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, Π³Π»ΡΠ΄Ρ Π½Π° ΡΡΠΎΡ ΠΊΠΎΠ΄ Π΅ΡΠ΅ ΡΠ°Π·, Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΈΠΆΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½
ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠ½Π°ΡΠΎΠΊ - ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΈ Π²Π½ΡΡΡΠΈ Π·Π½Π°ΡΠΊΠ° Ρ ΡΡΡΠ»Π°Π»ΡΡ Π½Π° Π·Π½Π°ΡΠΎΠΊ
ΡΠ°ΠΌ.
Π― ΠΏΠΎΠ½ΡΠ» ΡΡΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΡΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ ΠΈ
ΠΏΠΎΠΏΡΡΠ°ΠΉΡΠ΅ΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΡΡΡΠ½Ρ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²ΡΠ·ΡΠ²Π°Π»
ΡΠΎΡ.
21 ΠΌΠ°Ρ 2020 Π³ΠΎΠ΄Π° Π² 18:20 Vivek_Neel [email protected] Π½Π°ΠΏΠΈΡΠ°Π»:
ΠΡΠΎΡΡΠΎ ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΊΠΎΠΌΡ-ΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ.
Π£ ΠΌΠ΅Π½Ρ Π½Π΅ Ρ Π²Π°ΡΠ°Π»ΠΎ ΠΏΠ°ΠΌΡΡΠΈ, Π° ΠΏΠΎΡΠΎΠΌ Ρ ΡΠ·Π½Π°Π», ΡΡΠΎ ΡΡΠΎ Π·Π°
ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅:Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π°, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠΎΠΊ const Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½
ΠΊΠΎΠ΄ ΠΏΡΠΎΡΡΠΎ Π²Ρ ΠΎΠ΄ΠΈΡ Π² Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ», ΠΏΡΠΎΠ²Π΅ΡΡΡ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.const iconMapping = {
"flash-outline": FlashOutline,
};
ΡΠΊΡΠΏΠΎΡΡ const Icon = ({name}) => {
const Icon = iconMapping [ΠΈΠΌΡ];Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅
;
}ΠΡΠ»ΠΈ Ρ Π΄ΠΎΠ±Π°Π²Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠΎΠΊ const Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½, Ρ ΠΈΠ·Π±Π°Π²Π»ΡΡΡ ΠΎΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΏΠ°ΠΌΡΡΡΡ....
const Icon = iconMapping [ΠΈΠΌΡ];Π΅ΡΠ»ΠΈ (! ΠΠ½Π°ΡΠΎΠΊ) Π²Π΅ΡΠ½Π΅Ρ Π½ΠΎΠ»Ρ;
Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅;
}ΠΠ°ΠΊ Π²Ρ ΠΏΠΎΠ½ΡΠ»ΠΈ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° Π²ΡΠ·Π²Π°Π» ΡΡΠΎ
ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°?-
ΠΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ.
ΠΡΠ²Π΅ΡΡΡΠ΅ Π½Π° ΡΡΠΎ ΠΏΠΈΡΡΠΌΠΎ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/zeit/next.js/issues/7929#issuecomment-632187103 ΠΈΠ»ΠΈ
ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ
https://github.com/notifications/unsubscribe-auth/ABA2CL7ZJQY5YPYJVCJMCODRSVIE7ANCNFSM4ICM4RAA
.>
ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Ρ ΠΌΠΎΠ΅Π³ΠΎ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ½ΡΠ», Next.js (Π½Π°ΡΠΈΠ½Π°Ρ Ρ v9.0.0) Π½Π΅ ΡΠΌΠ΅Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΠΌΡΡΡ Π±ΠΎΠ»ΡΡΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ ΠΏΡΠ΅Π΄Π΅Π»Π° ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π½ΠΎ ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½Π°Ρ ΠΏΠ°ΠΌΡΡΡ Π²Π·ΡΡΠ²Π°Π΅ΡΡΡ, ΠΈ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° ΠΊΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠΎΠΆΠ΅Ρ Π»ΠΈ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠΈΠ·Π½Π°ΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΠΏΠΎΠΌΠΎΡΡ Π½Π°ΠΌ Π² Π΅Π΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅?
Π― ΠΈ ΠΌΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π΄Π°ΠΆΠ΅ ΠΈΠΌΠ΅Ρ ΠΌΠΎΡΠ½ΡΠ΅ Π½ΠΎΡΡΠ±ΡΠΊΠΈ, ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. ΠΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΏΠΎΡΡΠΈ 1 Π³ΠΎΠ΄, Π½ΠΎ ΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΏΠΎ Π½Π΅ΠΉ Π½Π΅ Π±ΡΠ»ΠΎ. ΠΠΈΡΠ½ΠΎ Ρ ΠΌΠΎΠ³Ρ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ - ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Next.js, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ΠΎΠ±Π΅ΡΠΏΠΎΠΊΠΎΠ΅Π½ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ ΠΌΡ Π΄Π°ΠΆΠ΅ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°ΠΆΠ΅ Π½Π° CI (Π° ΠΌΡ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΌΠΎΡΠ½ΡΠ΅ ΠΠ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ).
ΠΠ½Π΅ ΡΠ°ΠΊ ΠΆΠ°Π»Ρ, ΡΡΠΎ Ρ Π·Π΄Π΅ΡΡ ΠΏΠ»ΠΎΡ ΠΎΠΉ ΠΏΠ°ΡΠ΅Π½Ρ, Ρ ΠΏΡΠΎΡΡΠΎ ΠΈΡΡ ΠΏΠΎΠΌΠΎΡΠΈ.
Π ΠΠΠΠΠ’ΠΠ ΠΠΠΠ’Π¬: ΠΌΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡ Π΄ΠΎ Next.js 9.3.3, Π½ΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΉ Π½Π΅ Π±ΡΠ»ΠΎ
ΠΠΎΠΆΠ΅Ρ Π»ΠΈ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠΈΠ·Π½Π°ΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΠΏΠΎΠΌΠΎΡΡ Π½Π°ΠΌ Π² Π΅Π΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅?
Π― Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΏΡΠΎΡΠΈΠ» Π²Π°Ρ Π² ΡΡΠΎΠΉ Π²Π΅ΡΠΊΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π½ΠΈΡΠ΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
ΠΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°ΡΡΡ Π² 9.4, ΠΊΡΡΠ°ΡΠΈ, ΡΠ°ΠΊ ΡΡΠΎ Π²Π°ΠΌ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΎΠΈΡ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ.
Π‘Π»ΡΡΠ°ΠΈ FWIW, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ https://github.com/zeit/next.js/issues/7929#issuecomment -618297553, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠΈΠΊΠ»Ρ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ React ).
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ½ΡΠ», Next.js (Π½Π°ΡΠΈΠ½Π°Ρ Ρ v9.0.0) Π½Π΅ ΡΠΌΠ΅Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΠΌΡΡΡ Π±ΠΎΠ»ΡΡΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ ΠΏΡΠ΅Π΄Π΅Π»Π° ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π£ΡΠΈΡΡΠ²Π°Ρ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ ΡΠ΅ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ, Ρ ΠΌΠΎΠ³Ρ ΡΡΡΠ»Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π½Π°ΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° Next.js, Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ, ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π±ΠΎΠ»Π΅Π΅ 300 ΡΡΡΠ°Π½ΠΈΡ. ΠΠ°ΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π΅ ΡΠΎΠΎΠ±ΡΠ°Π»ΠΈ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ Ρ ΠΏΠ°ΠΌΡΡΡΡ, ΠΈ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΡΡΡΠ°Π½ΠΈΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π½Ρ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ρ Π½Π΅ ΠΎΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Ρ ΠΏΡΠΎΡΡΠΎ Π³ΠΎΠ²ΠΎΡΡ, ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ, Π΅ΡΡΡ Π»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ΅ΡΠΊΠΎΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ.
Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Ρ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΏΡΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΡΠΎ Π±ΡΠ»Π° ΠΏΠ»Π°ΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΡ, ΠΌΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π― Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΏΡΠΎΡΠΈΠ» Π²Π°Ρ Π² ΡΡΠΎΠΉ Π²Π΅ΡΠΊΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π½ΠΈΡΠ΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
ΠΡΡΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ Π·Π΄Π΅ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Ρ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΊΠ°ΠΊ Ρ ΠΎΡΠΊΡΡΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ»Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΎΡΠΊΡΡΡΠ°, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π½Π° Π½Π΅ΠΉ Π½Π΅Ρ ΡΡΠ»ΡΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ, ΡΡΠΎ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
Π‘ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡΠ» ΠΎΡΡΠ°Π²Π»Π΅Π½ ΠΎΡΠΊΡΡΡΡΠΌ
Π― Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΌΠΎΠ΅ΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ, Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π·Π°ΠΊΡΡΡ.
ΠΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°ΡΡΡ Π² 9.4, ΠΊΡΡΠ°ΡΠΈ, ΡΠ°ΠΊ ΡΡΠΎ Π²Π°ΠΌ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΎΠΈΡ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ.
ΠΠΊΠ»ΡΡΠ΅Π½Π° / ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π° ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ? Π― ΡΠ΄Π°Π»ΠΈΠ» Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠ°ΡΡ (ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΡΠ΅ΡΠ΅Π· ΠΏΠ»Π°Π³ΠΈΠ½) ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΡΠΊΡΡΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ (ΠΎΡΠ΅Π½Ρ Π΄Π°Π²Π½ΠΎ), Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ.
ΠΡΠ»ΠΈ Π²Ρ ΡΡΠΈΡΠ°Π΅ΡΠ΅, ΡΡΠΎ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ Π°ΠΊΡΡΠ°Π»ΡΠ½Π°, Π·Π°ΠΊΡΠΎΠΉΡΠ΅ Π΅Π΅. Π Π΅ΠΏΠΎ Π±ΡΠ»ΠΎ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ Π΄Π°Π²Π½ΠΎ, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ.
Π― ΠΌΠΎΠ³Ρ ΠΏΠΎΠΌΠΎΡΡ Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ, Π½ΠΎ ΠΌΠ½Π΅ Π½ΡΠΆΠ΅Π½ ΡΠΎΠ²Π΅Ρ.
β² styled-icons (master) β yarn build:ci
yarn run v1.22.4
$ lerna run build
lerna notice cli v3.21.0
lerna info Executing command in 25 packages: "yarn run build"
lerna info run Ran npm script 'build' in '@styled-icons/styled-icon' in 6.6s:
$ tsc --project tsconfig.esm.json && mv dist/index.js dist/index.esm.js && tsc --project tsconfig.json
lerna ERR! yarn run build exited 1 in '@styled-icons/boxicons-logos'
lerna ERR! yarn run build stdout:
$ build-pack
Reading icon packs...
Error reading icons from pack
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
lerna ERR! yarn run build stderr:
error Command failed with exit code 1.
lerna ERR! yarn run build exited 1 in '@styled-icons/boxicons-logos'
lerna WARN complete Waiting for 4 child processes to exit. CTRL-C to exit immediately.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
ΠΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΏΠΎΠΏΡΠΎΡΠΈΠ» ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠΎΠ±ΡΠΈΠ» Π·Π΄Π΅ΡΡ, ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ΅ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠ»ΡΡΠ°Π΅Π². ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π±ΡΠ΄ΡΡ Π½Π° 100% ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ, Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½ΠΈΠ·ΠΊΠ°.
ΠΠΊΠ»ΡΡΠ΅Π½Π° / ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π° ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ? Π― ΡΠ΄Π°Π»ΠΈΠ» Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠ°ΡΡ (ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΡΠ΅ΡΠ΅Π· ΠΏΠ»Π°Π³ΠΈΠ½) ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΡΠΊΡΡΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ (ΠΎΡΠ΅Π½Ρ Π΄Π°Π²Π½ΠΎ), Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ.
ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΡΡΡ Π²ΡΠ΅Π³Π΄Π° Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, Ρ ΠΎΡΡ ΠΌΡ ΠΏΠ΅ΡΠ΅ΡΠ»ΠΈ Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΡΡΡ eval.
ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ»Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΎΡΠΊΡΡΡΠ°, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π½Π° Π½Π΅ΠΉ Π½Π΅Ρ ΡΡΠ»ΡΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ, ΡΡΠΎ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
Π― ΡΠ½ΠΎΠ²Π° ΠΎΡΠΊΡΡΠ» Π΅Π³ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»ΠΈ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΎΡΡΠ΅ΡΡ, ΠΈ Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» ΠΏΡΠΎΡΠΈΡΡ ΡΠ΅ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ: https://github.com/zeit/next.js/issues/7929#issuecomment -568760542
Π ΡΡΠΎΠΉ Π²Π΅ΡΠΊΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ 2 ΡΠ΅ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ. ΠΠ΄ΠΈΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π΅ ΡΠ²ΡΠ·Π°Π½ Ρ Next.js (ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ now dev
), Π° Π΄ΡΡΠ³ΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ / ΠΏΠΎΡΡΡΠΎΠ΅Π½.
ΠΠΎΡΡΠΎΠΌΡ Ρ Π΅ΡΠ΅ ΡΠ°Π· ΠΏΡΠΎΡΡ ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΌ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΈ, ΠΈΠ½Π°ΡΠ΅ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ.
Π― Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΌΠΎΠ΅ΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ, Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π·Π°ΠΊΡΡΡ.
ΠΠ΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ [email protected], ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π½Π΅ΡΠ°Π·Π³Π»Π°ΡΠ΅Π½ΠΈΠΈ, ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΡΠΎΠΊΠΎΠ½ΡΡΠ»ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π°Ρ, Ρ ΠΎΡΡ, ΡΡΠΈΡΡΠ²Π°Ρ, ΡΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΉΠΌΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΡΠΎΡΡΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ Ρ Π²Π°ΡΠΈΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΈ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π»ΠΈ ΡΠ²ΠΎΠΈΡ ΠΏΡΠ΅Π΄Π΅Π»ΠΎΠ² ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΈΡΡΠ΅ΡΠΏΡΠ²Π°ΡΡ ΠΏΠ°ΠΌΡΡΡ. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ±ΠΎΡΠΊΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ΅ΡΠ΅Π·
NODE_OPTIONS=--max-old-space-size=4096
.ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΡΡ Π½Π°ΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
// next.config.js module.exports = { experimental: { granularChunks: true } }
ΠΡΠΎ Π½Π΅ ΡΠ΅ΡΠΈΠ»ΠΎ Π½Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊ Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ.
ΠΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π·Π½Π°Π΅Ρ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π»ΠΈ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°?
ΡΠΎ Π΅ΡΡΡ: Next start
Π° Π½Π΅ NODE_ENV=production node server.js"
?
ΠΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠ° ΠΌΠΎΠ΅ΠΌ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π·Π°ΠΏΡΡΠ΅Π½ "node server.js", ΠΎΠ½ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Π΅Ρ ΠΏΠ°ΠΌΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Ρ Π½Π΅ ΠΏΠΎΠ»ΡΡΡ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ, ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠ΅Π½, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ ΡΠ΅ΡΡΠ΅Ρ Π²ΡΠ΅ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΡΡΡΡ ΠΈ ΠΏΡΠΎΡΠ΅Π΅, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΎΠ΄ΠΈΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅ ΡΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ.
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
0|profiles | 1: 0xa093f0 node::Abort() [node /home/projects/profiles/server.js]
0|profiles | 2: 0xa097fc node::OnFatalError(char const*, char const*) [node /home/projects/profiles/server.js]
0|profiles | 3: 0xb842ae v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node /home/projects/profiles/server.js]
0|profiles | 4: 0xb84629 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node /home/projects/profiles/server.js]
0|profiles | 5: 0xd30fe5 [node /home/projects/profiles/server.js]
0|profiles | 6: 0xd31676 v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector) [node /home/projects/profiles/server.js]
0|profiles | 7: 0xd3def5 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [node /home/projects/profiles/server.js]
0|profiles | 8: 0xd3eda5 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node /home/projects/profiles/server.js]
0|profiles | 9: 0xd4185c v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node /home/projects/profiles/server.js]
0|profiles | 10: 0xd0830b v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [node /home/projects/profiles/server.js]
0|profiles | 11: 0x1049f4e v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [node /home/projects/profiles/server.js]
0|profiles | 12: 0x13cf019 [node /home/projects/profiles/server.js]
ΠΡΠΎ ΠΌΠΎΠΉ package.json
{
"name": "profiles",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "node server.js",
"build": "yarn relay && next build",
"start": "NODE_ENV=production node server.js",
"relay": "relay-compiler --src ./ --exclude '**/.next/**' '**/node_modules/**' '**/test/**' '**/__generated__/**' --exclude '**/schema/**' --schema ./var/schema.graphql --artifactDirectory __generated__",
"relay-get-schema-stage": "graphql get-schema --project sourcr --endpoint stage && yarn run relay",
"relay-get-schema-prod": "graphql get-schema --project sourcr --endpoint prod && yarn run relay",
"relay-get-schema-dev": "graphql get-schema --project sourcr --endpoint dev && yarn run relay",
"pm2": "pm2"
},
"dependencies": {
"@babel/plugin-proposal-class-properties": "^7.10.4",
"@babel/plugin-proposal-decorators": "^7.10.5",
"@babel/plugin-proposal-export-default-from": "^7.10.4",
"@babel/plugin-proposal-optional-chaining": "^7.11.0",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-transform-runtime": "^7.11.0",
"@fortawesome/fontawesome": "^1.1.8",
"@fortawesome/fontawesome-free-regular": "^5.0.13",
"@fortawesome/fontawesome-free-solid": "^5.0.13",
"@fortawesome/react-fontawesome": "^0.1.11",
"@sentry/browser": "^5.21.0",
"@svgr/webpack": "^5.4.0",
"babel-loader": "^8.1.0",
"babel-plugin-styled-components": "^1.11.1",
"babel-plugin-transform-export-extensions": "^6.22.0",
"bootstrap": "^4.5.2",
"classnames": "^2.2.6",
"file-loader": "^6.0.0",
"formsy-react": "^1.1.5",
"graphql": "^15.3.0",
"jwt-decode": "^2.2.0",
"mobx": "^5.15.5",
"moment": "^2.28.0",
"next": "9.5.1",
"path": "^0.12.7",
"pm2": "^4.5.0",
"query-string": "^6.13.1",
"react": "16.13.1",
"react-dom": "16.13.1",
"react-helmet": "^6.1.0",
"react-player": "^2.6.0",
"react-relay": "^10.0.1",
"react-relay-network-modern": "^4.7.4",
"react-relay-network-modern-ssr": "^1.4.0",
"react-toastify": "^6.0.8",
"relay-compiler": "^10.0.1",
"relay-devtools": "^1.4.0",
"relay-devtools-core": "^0.0.8",
"relay-runtime": "^10.0.1",
"sass": "^1.26.10",
"sass-resources-loader": "^2.0.3",
"siema": "^1.5.1",
"transform-class-properties": "^0.1.0"
},
"devDependencies": {
"babel-plugin-relay": "^10.0.1"
}
}
ΠΠ»Ρ ΡΠ΅Ρ
, ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ Π±Π΅Π³Π»ΡΠΌ next build
Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ .babelrc
ΠΈΠ»ΠΈ babel.config.js
. Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ .babelrc
Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ Ρ Next.js, ΠΈ ΠΎΠ½Π° Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ next build
. Π ΠΌΠΎΠ΅ΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π° ΡΠΎΠ»ΡΠΊΠΎ Π² Docker. Π― ΠΈΡΠΏΡΠ°Π²ΠΈΠ» ΡΡΠΎ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΡΠ²ΠΎΠΉ Dockerfile Ρ ΡΡΠΎΠ³ΠΎ
FROM node:12
WORKDIR /app
COPY package.json package-lock.json /app/
ENV NODE_ENV production
RUN npm install
COPY . /app
RUN npm run build
RUN npm run next-build
EXPOSE 8081
CMD ["npm", "start"]
ΠΊ ΡΡΠΎΠΌΡ
FROM node:12
WORKDIR /app
COPY package.json package-lock.json /app/
ENV NODE_ENV production
RUN npm install
COPY . /app
RUN npm run build
# Let Next.js use its own Babel config
RUN rm .babelrc
RUN npm run next-build
EXPOSE 8081
CMD ["npm", "start"]
ΠΠ»Ρ ΡΠ΅Ρ
, ΠΊΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠ±ΡΠΈΠ΅ Π±Π΅Π³ΡΠ½Ρ Π² GitLab CI, ΡΡΠΈ Π±Π΅Π³ΡΠ½Ρ Π·Π°Π²Π΅ΡΡΠ°Ρ Π²Π°Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ SIGABRT
ΠΈ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π²ΡΠ·ΠΎΠ²ΡΡ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ. ΠΡ Π²Π΅ΡΠ½ΡΠ»ΠΈΡΡ ΠΊ Π½Π°ΡΠ΅ΠΌΡ Π³ΡΡΠΏΠΏΠΎΠ²ΠΎΠΌΡ Π±Π΅Π³Ρ, ΠΈ ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ.
Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ ΠΈΠ· Π²Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ next-transpile-modules
, ΠΌΠΎΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡΠ»ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ resolveSymlinks
-setting (Π½Π°ΡΠΈΠ½Π°Ρ Ρ v4.1.0) ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
// next.config.js
const withTM = require("next-transpile-modules")([
"somepackage"
], {
resolveSymlinks: true
})
module.exports = {
...withTM()
}
Π― Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π·Π΄Π΅ΡΡ, ΠΊΠΎΠ³Π΄Π° somepackage
ΡΡΠ°Π» "ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌ" (ΠΎΡ 500 Π΄ΠΎ 700 ΠΠ), ΡΠ΅ΠΏΠ΅ΡΡ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ Π²ΡΠ΅ΠΉ ΠΌΠΎΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ (ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» Ρ ΠΎΠΏΡΠΈΠ΅ΠΉ 8 ΠΠ) Π±ΡΠ»ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ ΡΡΠΈΠΌ. .
Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ΅ΡΠ»ΠΈ, Π²ΡΠ·Π²Π°Π½Π½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌΡ ΡΠ°Π·Π΄ΡΡΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
@timneutkens ΠΌΠΎΠΆΠ΅Ρ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΡΠ½ΠΎΠ²Π° ΠΎΡΠΊΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠ΅ΠΏΠΎ?