Next.js: [Π‘Π»Π΅Π΄. 9] Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ памяти ΠΏΡ€ΠΈ создании прилоТСния

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 12 июл. 2019  Β·  66ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: vercel/next.js

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС

ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ прилоТСния с 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

ОТидаСмоС повСдСниС

Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ

Π‘ΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹

Если Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ снимки экрана, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

БистСмная информация

  • ОБ: macOS
  • Π£Π·Π΅Π»: 10.13.0 (ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ с ΡƒΠ·Π»ΠΎΠΌ 8.X)
  • ВСрсия Next.js: 9.0.1

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ контСкст

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ сюда любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ контСкст ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

needs investigation

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

@timneutkens ΠΌΠΎΠΆΠ΅Ρ‚, поТалуйста, снова ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ€Π΅ΠΏΠΎ?

ВсС 66 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠžΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ это Π±Π΅Π· Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Π”Π°, я знаю. РаньшС Ρƒ мСня Π±Ρ‹Π»Π° ΠΊΡƒΡ‡Π° памяти Π²ΠΎΠΊΡ€ΡƒΠ³ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ исходных ΠΊΠ°Ρ€Ρ‚, поэтому я ΡƒΠ΄Π°Π»ΠΈΠ» Π΅Π΅. И я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» это сообщСниС ΠΎΠ± ошибкС Π²ΠΎΠΊΡ€ΡƒΠ³ Ρ„Π°ΠΉΠ»Π° собствСнного массива.

Π•ΡΡ‚ΡŒ Π»ΠΈ способ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ трассировку стСка?

К Π²Π°ΡˆΠ΅ΠΌΡƒ свСдСнию, ΠΎΠ½ сСйчас создаСтся, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ я Π΄ΠΎΠ±Π°Π²ΠΈΠ» большС памяти Π² процСсс ΡƒΠ·Π»Π°:

NODE_OPTIONS="--max_old_space_size=4096"

Он создаСт Π΄ΠΎ 28 ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ², Π½ΠΎ ΠΊΠΎΠ³Π΄Π° я даю 30 ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² (Ρƒ нас Π΅ΡΡ‚ΡŒ 31 ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚), объСм памяти процСсса достигаСт 3 Π“Π‘ (ΠΈ Π΄Π°ΠΆΠ΅ большС). Π― Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ процСсс сборки Π½Π° срСднСм Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ΅ с 8 Π“Π‘ памяти, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. Но это ΡƒΠ΄Π°Π»ΠΎΡΡŒ.

Π― Π½Π΅ знаю, слСдуСт Π»ΠΈ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ этот вопрос ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΈΠ»ΠΈ Π½Π΅Ρ‚.
Если ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, Π²ΠΎΡ‚ статистика построСнных страниц:

image

ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π²Ρ‹Π»Π΅Ρ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ исходныС ΠΊΠ°Ρ€Ρ‚Ρ‹ (Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв).

На самом Π΄Π΅Π»Π΅, СдинствСнный способ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ прСдоставлСно ΠΏΠΎΠ»Π½ΠΎΠ΅ воспроизвСдСниС. Π― ΠΏΠΎΠΊΠ° Π·Π°ΠΊΡ€ΠΎΡŽ это.

ΠœΡ‹ Ρ‚ΠΎΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ послС обновлСния Π΄ΠΎ 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.

  • ОбновлСн Π΄ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ вСрсии 9.1.3
  • ΠžΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² package.json;
  • Π£Π΄Π°Π»ΠΈΠ» ΠΏΠ°ΠΏΠΊΡƒ node_modules ΠΈ package.lock.json
  • запустил npm install

Когда я выполнял Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π°Ρ‡Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎΠ½ Π½Π΅ удался со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ошибкой:
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). Π― ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»:

  • НачинаСт ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ с Next 9.1.5 ΠΈ 9.1.6. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Π½Π° 9.1.4 ошибка исчСзнСт.
  • Π£ мСня Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ΡΡ‚ΡŒ собствСнная сборка _ckeditor_ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 606 ΠšΠ‘. Если я Π΅Π³ΠΎ ΡƒΠ΄Π°Π»ΡŽ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° исчСзнСт.

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚Π΅ ΠΌΠ½Π΅, Ссли я ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠΌΠΎΡ‡ΡŒ. Π’ΠΎΡ‚ ΠΆΡƒΡ€Π½Π°Π» ошибок ...

<--- 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

ΠžΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ

Бвязанная с этим ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°:

https://github.com/zeit/now/issues/3307

ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊ ΠΎΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ, Ссли это ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚.
Π£ мСня Π±Ρ‹Π»Π° Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠ° памяти, Π° Π·Π°Ρ‚Π΅ΠΌ я ΡƒΠ·Π½Π°Π», Π² Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΌΠΎΠ΅ΠΌ случаС:

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π°, Ссли 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 Π“Π‘) Π±Ρ‹Π»ΠΎ нСдостаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с этим. .

Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ‚Π»ΠΈ, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Π΅ символичСскими ссылками, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приводят ΠΊ ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ€Π°Π·Π΄ΡƒΡ‚ΠΈΡŽ памяти.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

sospedra picture sospedra  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

wagerfield picture wagerfield  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

jesselee34 picture jesselee34  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

timneutkens picture timneutkens  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

rauchg picture rauchg  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ