Next.js: [Next 9] kehabisan memori saat membuat aplikasi

Dibuat pada 12 Jul 2019  ·  66Komentar  ·  Sumber: vercel/next.js

Laporan bug

Jelaskan bugnya

Memindahkan aplikasi dari 8 Berikutnya ke 9 Berikutnya.
Ketika saya menjalankan next build prosesnya keluar dari memori dan tidak dapat membangun aplikasi.

FYI, ini adalah aplikasi dengan kurang lebih 20 rute.

Untuk Mereproduksi

Sulit untuk mereproduksi karena saya tidak tahu apa yang salah. 8 berikutnya mengkompilasi tanpa masalah tetapi tidak Next9.

Berikut jejak tumpukannya. Jika Anda tahu cara mendapatkan hasil yang lebih deskriptif, beri tahu saya dan saya akan memberikan:



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

Perilaku yang diharapkan

Itu harus dibangun

Screenshot

Jika memungkinkan, tambahkan tangkapan layar untuk membantu menjelaskan masalah Anda.

Sistem Informasi

  • OS: macOS
  • Node: 10.13.0 (ini harus bekerja dengan node 8.X juga)
  • Versi Next.js: 9.0.1

Konteks tambahan

Tambahkan konteks lain apa pun tentang masalah tersebut di sini.

needs investigation

Komentar yang paling membantu

@timneutkens dapatkah membuka kembali masalah sekarang setelah Anda memiliki repo?

Semua 66 komentar

Tidak mungkin melacaknya tanpa reproduksi.

Ya aku tahu. Sebelum saya mendapatkan tumpukan memori di sekitar pembuatan peta sumber, jadi saya menghapusnya. Dan saya mendapat pesan kesalahan ini di sekitar file array asli.

Adakah cara untuk mendapatkan pelacakan tumpukan yang lebih verbose?

FYI sekarang sedang dibangun tetapi hanya karena saya menambahkan lebih banyak memori ke proses node:

NODE_OPTIONS="--max_old_space_size=4096"

Itu membangun hingga 28 rute tetapi ketika saya memberikan 30 rute (kami memiliki 31 rute) memori proses naik ke memori 3GB (dan bahkan lebih). Saya menjalankan proses build pada laptop rata-rata yang memiliki memori 8GB, beberapa di antaranya sudah digunakan. Tapi itu berhasil.

Saya tidak tahu apakah saya harus membiarkan masalah ini tetap terbuka atau tidak.
Jika membantu, berikut statistik dari halaman yang dibuat:

image

Prosesnya macet ketika mencoba membuat peta sumber (sebagian besar waktu).

Sungguh satu-satunya cara kita akan tahu adalah jika reproduksi lengkap disediakan. Saya akan menutup ini untuk saat ini.

Kami juga telah memperhatikan bahwa setelah memutakhirkan ke 9 Berikutnya kami keluar dari kesalahan memori sedangkan dengan 8 Berikutnya ini bukan masalah.

Dalam kasus kami, kami sedang membangun aplikasi kami di CircleCi sebagai bagian dari aliran CI kami dan menghadapi yang berikut:

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

4GB adalah batas memori untuk wadah CircleCI, karenanya terjadi kesalahan. Tampaknya membangun dengan Next 9 kita mencapai batas itu.

Saya tidak memiliki kasus yang dapat direproduksi untuk dibagikan saat ini.

Kami juga menghadapi masalah ini saat menerapkan aplikasi saya dengan NextJs 9.

Dari 3 project yang kami tingkatkan ke NextJs 9, dua di antaranya menghadapi masalah penggunaan ram saat menerapkan ke Elastic Beanstalk. Akhirnya kita harus mengembalikannya. Sayangnya saya tidak memiliki repo untuk dibagikan untuk mereplikasi masalah tersebut.

Saya mendapatkan masalah memori yang sama, tetapi masalah saya terjadi setelah semua lambda dibuat. Saya dapat menyelesaikan build di laptop saya, tetapi macet saat menerapkan, namun saya telah melihat beberapa masalah memori secara berkala saat mengembangkan secara lokal. Satu-satunya hal yang dapat dikenali (bagi saya) adalah baris ini:

 readFile [/tmp/b0cc21aa63cece4e/.build-utils/.builder/node_modules/@now/next/dist/index.js:9555]

Ini log ...


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

Ini konfigurasi webpack saya:

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 Saya kehabisan memori menggunakan Next.js 9 juga. Bisa jadi karena jumlah komponen yang kita kompilasi. Anda menyebutkan bahwa Anda membutuhkan repro penuh. Anda dapat melihat cabang saya.
https://github.com/stramel/styled-icons/tree/ms/add-material-variants

Ini adalah build yang gagal: https://travis-ci.org/jacobwgillespie/styled-icons/builds/582987078

Travis memiliki set NODE_OPTIONS=--max-old-space-size=4096

@timneutkens dapatkah membuka kembali masalah sekarang setelah Anda memiliki repo?

Saya menghadapi masalah yang sama dengan [email protected].

Saya menduga aplikasi ini baru saja mencapai batas ukurannya untuk mulai kehabisan memori. Anda harus menjalankan bangunan Anda dengan lebih banyak melalui NODE_OPTIONS=--max-old-space-size=4096 .

Atau, Anda dapat mengaktifkan fitur chunking baru kami:

// next.config.js
module.exports = {
  experimental: { granularChunks: true }
}

Terima kasih @Timer , saya akan mencoba fitur granularChunks .

Juga, sebagai catatan, saya telah mencoba 8192 untuk nilai pada mesin lokal saya dan masih gagal. Saya agak takut membayangkan berapa banyak memori yang saya perlukan untuk membuatnya dibangun.

Saya telah melihat beberapa masalah lama dan saya perhatikan bahwa terkadang, ketika ada rilis besar baru, beberapa orang menghadapi masalah memori ini. Saya ingin tahu, apakah Anda melakukan tes memori pada beberapa proyek besar?

Rilis utama baru ini mencapai batas memori node. Apa penyebab dari banyaknya memori yang tidak ada sebelumnya?

@Timer Saya mencoba menggunakan fitur granularChunks dan masih mengalami masalah yang sama. Bahkan secara lokal dengan 8192 set.

Ini memiliki set fitur konfigurasi potongan granular https://github.com/stramel/styled-icons/tree/ms/granular-chunks

Beralih ke menarik komponen secara dinamis, https://github.com/stramel/styled-icons/tree/ms/dynamic-import-granular-chunks

Masalah ini terjadi pada salah satu repositori kami saat kami mengubah build untuk melakukan minifikasi, yang sekarang dinonaktifkan secara default.

Pembaruan: Saya memutuskan bahwa dalam basis kode kami masalahnya adalah menggunakan plugin withSourceMaps :

"@zeit/next-source-maps": "^0.0.4-canary.1"

Ini masuk akal karena kami menyetelnya ke hidden-source-map yang sangat lambat. Padahal, saya tidak tahu mengapa itu secara eksponensial lebih lambat dari NextJS 8.

Kami juga memperhatikan masalah kinerja besar-besaran setelah memutakhirkan ke v9 ... Saya menggunakan macbook pro 2015, tidak pernah ketinggalan sebelumnya dan saya telah menjalankan beberapa program yang cukup berat di atasnya, tetapi sekarang setiap kali saya menjalankan aplikasi saya berikutnya secara lokal itu benar-benar tertinggal dan semuanya melambat secara besar-besaran.

Saya biasanya harus memulai ulang aplikasi setiap 10 menit atau lebih, hari ini adalah hari pertama saya mencoba bertahan dan mengatasinya, dan setelah beberapa jam berjalan dalam gerakan pengembang saya mendapatkan JavaScript heap out of memory yang sama dengan orang itu telah melaporkan dari menjalankan build berikutnya. Pasti ada kebocoran memori di sini di suatu tempat

Aku pikir juga begitu. Rekan saya memiliki MacBook yang lebih baru dan sejak kami meningkatkan ke 9 berikutnya, server pengembang menjadi lebih lambat untuk dikompilasi ulang. Kadang-kadang butuh waktu 20 detik.

Saya mendapatkan masalah yang sama, bahkan mencoba mengatur NODE_OPTIONS = 16384 pada memori fisik 32GB MacBook Pro saya tetapi tidak ada efek.

Log terdaftar:

==== 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 harap buka kembali masalah ini, atau buka yang baru. Kebocoran memori ini serta beberapa permintaan HMR tak terbatas yang aneh membuat aplikasi kita tidak dapat digunakan dalam mode pengembangan dan menghabiskan banyak waktu kita.

Menambahkan saksi lain.
Saya mewarisi aplikasi dengan versi 4.2.3 Berikutnya.

  • Diperbarui ke versi berikutnya 9.1.3
  • Memperbarui semua versi paket lainnya di package.json;
  • Menghapus folder node_modules dan package.lock.json
  • jalankan npm install

Ketika saya melakukan servis lokal proyek itu gagal dengan kesalahan berikut:
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
Kegagalan biasanya terjadi dalam waktu kurang dari sepuluh menit sejak memulai aplikasi dan dapat dipercepat dengan memicu lebih banyak navigasi di aplikasi.

Saya telah kembali ke versi 8.1.0 dan tidak dapat mereproduksi kegagalan yang sama - bahkan dengan navigasi yang lebih serius (dan dengan demikian membangun halaman).

Ya, kami juga melihat ini ...

Saatnya membuka kembali, saya pikir @timneutkens

Saya menghadapi masalah ini juga di [email protected] dengan server kustom react-router sejak kemarin sejak saya mulai mengimpor bootstrap.min.css pada mode pengembangan saya.

baik ketika saya mengimpor langsung bootstrap.min.css dengan memerlukan / impor melalui js atau @import melalui css / scss. memori nodejs saya yang digunakan telah meningkat setelah beberapa kepatuhan saat mengembangkan.

tetapi ketika saya mengimpor bootstrap dari cdn, melalui di

dengan next / head, memori tampaknya baik-baik saja bahkan setelah banyak memenuhi dalam waktu pengembangan yang lama.
<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>

jadi menurut saya masalahnya ada pada minifikasi css di css berikutnya. karena ketika saya menurunkan versi proyek saya ke 8.1.0, saya mendapat masalah minifikasi ini. https://github.com/zeit/next-plugins/issues/541. jadi saya mencoba solusi ini (https://github.com/zeit/next-plugins/issues/392#issuecomment-475845330). dan belum mendapatkan masalah memori lagi.

// 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;
  },
});

Saya mengalami masalah yang sama setelah meningkatkan ke Next 9.1.3. Saya juga menggunakan next-css, mungkin itu yang menyebabkan crash?

Tidak sepenuhnya yakin apakah ini akan sama untuk semua orang, tetapi pastikan untuk memeriksa bahwa sumber daya apa pun yang Anda minta benar-benar dapat ditemukan. Saya memiliki gambar yang tidak dapat ditemukan aplikasi saya dan terus mencarinya sampai saya mendapatkan kesalahan heap. Saya menghapus penyebutan gambar itu dan itu tidak memberi saya kesalahan lagi.

Saya juga berhasil memperbaiki ini, komentar @lloan membantu men-debug masalah.

Dalam kasus saya, saya mereferensikan /public/manifest.json sebagai tag meta di <head/> , namun sumber daya itu tidak ada dalam proyek saya dan ini menyebabkan kebocoran memori.

Saya punya kode ini, yang icon.png tidak ada

<Head>
  <link rel="icon" href="/static/icon.png" type="image/png" />
</Head>

Dengan memperbaiki impor favicon, saya tidak lagi mendapatkan kesalahan kebocoran memori

<Head>
  <link rel="icon" href="/icon.png" type="image/png" />
</Head>

Seperti yang disebutkan https://github.com/zeit/now/issues/3307 Saya yakin ada sesuatu yang terjadi dengan folder static / public .

Saya punya masalah ini juga. Seperti yang disebutkan bukinoshita, saya melihat ke folder statis. Saya menghapus folder 674 file json (untuk tujuan pengujian) dari folder public/static/ . Saya tidak punya masalah sejak itu.

Masalah ini terjadi pada salah satu repositori kami saat kami mengubah build untuk melakukan minifikasi, yang sekarang dinonaktifkan secara default.

Pembaruan: Saya memutuskan bahwa dalam basis kode kami masalahnya adalah menggunakan plugin withSourceMaps :

"@zeit/next-source-maps": "^0.0.4-canary.1"

Ini masuk akal karena kami menyetelnya ke hidden-source-map yang sangat lambat. Padahal, saya tidak tahu mengapa itu secara eksponensial lebih lambat dari NextJS 8.

Saya mulai mengalami masalah ini juga setelah saya meningkatkan ke "@zeit/next-source-maps": "^0.0.4-canary.1" . Ada solusi atau saya harus menyingkirkan peta sumber?

@focux Saya harus menonaktifkan peta sumber sama sekali. Setelah itu, penggunaan memori menurun drastis

Punya masalah yang sama di sini juga. Tampaknya macet ketika ukuran file dalam build terlalu besar. Misalnya, saya mengimpor sesuatu dari Typecript dan ukuran file dalam build naik menjadi 2,41 mb. Kemudian CI saya dengan ram 2GB mulai macet. Setelah saya menghapus import Typecript, ukuran file turun menjadi 100kb dan berfungsi lagi.

Nextjs 9 sangat lambat di CI sejak awal. Butuh waktu sangat lama untuk membangun dan saya tidak punya kebutuhan khusus ... hanya bereaksi barang, bahan ui, beberapa paket di sana-sini. Saya memiliki CI: s di cluster yang sama dengan node / express, beberapa inti dotnet, php dll semua ini memiliki memori 1GB di CI dan dibangun dengan cukup cepat. Saya tidak tahu lebih dari perasaan saya tentang proses membangun memiliki beberapa masalah mungkin?

Masalah yang sama disini. Tindakan Mac OS / Github. Tidak ada tindakan yang disebutkan di sini yang membantu, tidak dapat menemukan file apa pun yang ditautkan tetapi tidak ada.

Namun, proyek dibangun (dan sedang dalam produksi) di Zeit Now.

Akan sangat senang membantu jika tahu caranya.

Masalah yang sama di sini (MacOS). Apa yang saya temukan adalah:

  • Mulai terjadi dengan Next 9.1.5 dan 9.1.6. Mendowngrade ke 9.1.4 membuat kesalahan hilang.
  • Saya memiliki build _ckeditor_ saya sendiri di dalam proyek, dan ukurannya 606KB. Jika saya menghapusnya, masalah akan hilang.

Beri tahu saya jika saya bisa membantu. Di sini Anda memiliki log kesalahan ...

<--- 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 Saya pikir ini pelakunya. Dalam mode pengembang ada generasi peta sumber. Menurut saya, dari waktu ke waktu, plugin peta sumber ini menyimpan terlalu banyak memori.

Saya masih mengalami masalah yang sama meskipun saya menonaktifkan pembuatan peta sumber

Сергей.

Pada 24 Desember 2019 pukul 10:01 GMT, Emanuele [email protected] menulis:

SourceMapConsumer_allGeneratedPositionsFor saya pikir ini adalah pelakunya. Dalam mode pengembang ada generasi peta sumber. Menurut saya, dari waktu ke waktu, plugin peta sumber ini menyimpan terlalu banyak memori.

-
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub , atau berhenti berlangganan .

Perlu diingat bahwa memposting "Saya masih mengalami ini" tidak akan menyelesaikan masalah. Berikan reproduksi lengkap agar orang-orang dapat melihatnya, jika tidak, komentar Anda sama dengan melakukan 👍 pada masalah awal tetapi mengirim ping ke semua orang dalam masalah tanpa alasan.

Selalu pastikan komentar Anda dapat ditindaklanjuti atau berguna. Misalnya seperti ematipico berbagi hal-hal berdasarkan penyelidikan masalah itu berguna. Mengatakan "Saya masih mengalami masalah ini" tidaklah berguna.

Apakah ada solusi lain? CI / CD Pipeline saya gagal pada 1GB RAM.

Langkah-langkah repro @timneutkens seperti yang disebutkan dalam masalah tertutup ini:

https://github.com/zeit/next.js/issues/9442#issuecomment -554839437

Solusi @ Vista1nik yang berhasil bagi saya adalah membuat ulang direktori statis yang sudah usang.

Masalah terkait sekarang:

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

Hanya untuk menambah diskusi kalau-kalau itu membantu siapa pun.
Saya mengalami kehabisan memori dan kemudian saya menemukan apa masalahnya dalam kasus saya:

Dalam potongan kode berikut, jika const Icon kebetulan menjadi undefined kode hanya masuk dalam pengulangan tak terbatas untuk memeriksa apakah komponen tersebut valid.

const iconMapping = {
  "flash-outline": FlashOutline,
};

export const Icon = ({ name }) => {
  const Icon = iconMapping[name];

  return <Icon />;
}

Jika saya menambahkan tanda centang jika const Icon tidak ditentukan, saya menyingkirkan masalah kehabisan memori.

...
  const Icon = iconMapping[name];

  if (!Icon) return null;
  return <Icon />;
}

Hal yang sama terjadi pada saya, kemudian saya menyadari ada kesalahan ketik yang menyebabkannya:

const Button = ({ children }) => {
  // BUG: the button should be lower case (the HTML input)
  //      instead of CamelCase (an undefined component)
  return <Button>{children}</Button>
}

Silakan coba tingkatkan ke versi terbaru Next.js, kami melakukan banyak pengoptimalan untuk penggunaan memori baru-baru ini.

@timneutkens , saya memiliki versi terbaru (9.3.5). Saya membuat proyek pagi ini dan menghadapi kesalahan itu beberapa menit kemudian.

Memiliki masalah serupa di CricleCI saat membangun aplikasi dengan peta sumber menggunakan next-source-maps

NODE_OPTIONS="--max_old_space_size=4096" membantu secara lokal tetapi di CircleCI Anda juga perlu meningkatkan kelas sumber daya https://circleci.com/docs/2.0/configuration-reference/#resource_class menjadi large setidaknya untuk membuatnya berfungsi tepat.

Saya mulai mendapatkan kesalahan ini setelah memperbarui ke 9.3.6 berikutnya hari ini:

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

Perbaiki dengan memodifikasi paths di tsconfig.json seperti yang disarankan di # 12280

Mungkin penyebabnya berbeda

Masalah yang sama muncul di sini setelah memutakhirkan dari 9.0.5 ke 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

Ada ide?

@szaza dapatkah Anda mencoba next@canary , kasus yang paling mungkin adalah Anda memiliki masalah yang dijelaskan di sini: https://github.com/zeit/next.js/issues/12280

Ok, setelah menghapus node_modules dan menginstal ulang dependensi, tampaknya ini berfungsi dengan versi canary, namun sekarang saya mendapat kesalahan lain: Cannot find module 'next-server/dist/server/next-server'. . Apakah itu tampak asing bagi Anda?

Oh saya mengerti, sudah dipindahkan ke import Server from "next/dist/next-server/server/next-server"; .
Sekarang berfungsi dengan baik. Terima kasih atas bantuan Anda!

@szaza bagaimana Anda akhirnya mengimpor modul itu dalam proyek Anda? Ini modul internal? Saya kira Anda bermaksud mengimpor 'next' sebagai gantinya?

Saya sedang mengerjakan proyek besar yang ditulis dalam TypeScript. Ada middleware otentikasi paspor yang dikonfigurasi, yang mengarahkan kembali pengguna yang tidak sah ke halaman login. Ini diimplementasikan dengan cara berikut:

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);
...
}

Setelah memperbarui versi berikutnya dari 9.0.5 menjadi 9.3.7-canary.0, Server type tidak dapat diimpor lagi dari next-server/dist/... , tetapi dari jalur yang disebutkan di atas.

Saya mengalami kesalahan yang sama ketika saya meningkatkan semua perpustakaan di package.json saya. Saat ini saya menggunakan NextJS 9.2.2 dengan @ zeit / next-css tanpa masalah. Sepertinya beberapa versi perpustakaan menimbulkan masalah memori atau entah bagaimana bertentangan dengan NextJS.

Konfigurasi paket saya saat ini adalah -

{
"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"
  }
}

Saya mempersempit masalah khusus saya pada penggunaan perpustakaan https://github.com/google/schema-dts. Ketika definisi tipe dari pustaka ini digunakan di aplikasi Berikutnya saya, pembuatan tidak pernah selesai, penggemar Macbook menggunakan kekuatan penuh dan akhirnya mengeluarkan beberapa file json laporan OOM di root proyek.

Saya men-debug masalah dengan menghapus semua kecuali satu halaman dari pages/ dan menghapus kode sampai proyek dibangun dan kemudian secara bertahap memasukkan kode kembali.

Mungkin ini membantu seseorang yang menemukan utas ini 🤷‍♂️

Memiliki masalah serupa di CricleCI saat membangun aplikasi dengan peta sumber menggunakan next-source-maps

NODE_OPTIONS="--max_old_space_size=4096" membantu secara lokal tetapi di CircleCI Anda juga perlu meningkatkan kelas sumber daya https://circleci.com/docs/2.0/configuration-reference/#resource_class menjadi large setidaknya untuk membuatnya berfungsi tepat.

Ini adalah satu-satunya hal yang berhasil untuk kami 👍

Pada aplikasi Next.js yang cukup besar (v9.3.6), beberapa dari kami mengalami masalah memori tumpukan saat memulai aplikasi (mode pengembang) yang mana pengaturan NODE_OPTIONS="--max_old_space_size=4096" membantu untuk Node 10, atau sebaliknya, pada Node 12 dan seterusnya, ini ditangani untuk Anda dengan komit ini dan yang lainnya yang memperhitungkan jumlah memori yang dialokasikan ke wadah (khusus Linux afaik).

Hanya untuk menambah diskusi kalau-kalau itu membantu siapa pun.
Saya mengalami kehabisan memori dan kemudian saya menemukan apa masalahnya dalam kasus saya:

Dalam potongan kode berikut, jika const Icon kebetulan menjadi undefined kode hanya masuk dalam pengulangan tak terbatas untuk memeriksa apakah komponen tersebut valid.

const iconMapping = {
  "flash-outline": FlashOutline,
};

export const Icon = ({ name }) => {
  const Icon = iconMapping[name];

  return <Icon />;
}

Jika saya menambahkan tanda centang jika const Icon tidak ditentukan, saya menyingkirkan masalah kehabisan memori.

...
  const Icon = iconMapping[name];

  if (!Icon) return null;
  return <Icon />;
}

Bagaimana Anda mengetahui bahwa ini adalah bagian kode yang menyebabkan masalah ini?

Cukup menarik, melihat kode ini lagi saya benar-benar melihat yang lain
masalah. Ikon adalah komponen dan di dalam Ikon saya mereferensikan Ikon
diri.

Cara saya mengetahuinya sebagian besar dengan mengisolasi komponen demi komponen dan
cobalah untuk mereproduksi masalah hingga saya menemukan komponen mana yang memprovokasi
bahwa.

Pada Kamis, 21 Mei 2020 pukul 18:20, Vivek_Neel [email protected] menulis:

Hanya untuk menambah diskusi kalau-kalau itu membantu siapa pun.
Saya mengalami kehabisan memori dan kemudian saya menemukan apa itu
masalah dalam kasus saya:

Dalam potongan kode berikut, jika Ikon const kebetulan tidak ditentukan
kode hanya masuk dalam loop tak terbatas untuk memeriksa apakah komponen tersebut valid.

const iconMapping = {
"flash-outline": FlashOutline,
};
ekspor Ikon const = ({nama}) => {
const Icon = iconMapping [nama];

kembali ;
}

Jika saya menambahkan tanda centang jika const Ikon tidak ditentukan, saya menyingkirkan dari
masalah memori.

...
const Icon = iconMapping [nama];

if (! Icon) return null;
kembali ;
}

Bagaimana Anda mengetahui bahwa ini adalah bagian kode yang menyebabkan ini
isu?

-
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/zeit/next.js/issues/7929#issuecomment-632187103 , atau
berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/ABA2CL7ZJQY5YPYJVCJMCODRSVIE7ANCNFSM4ICM4RAA
.

>

Dikirim dari ponsel saya

Sejauh yang saya pahami, Next.js (sejak v9.0.0) tidak dapat mengoptimalkan memori aplikasi web yang besar. Proses build kami mencapai batas memori saat mulai mengompilasi bagian sisi server proyek.

Selama mode pengembangan, server lokal pada awalnya baik-baik saja tetapi setelah beberapa waktu memori yang dialokasikan meledak dan kesalahan tumpukan memori muncul.

Bisakah seseorang dari tim inti mengetahui masalah ini dan membantu kami untuk menentukan prioritas masalah?

Saya dan tim saya, bahkan dengan laptop yang kuat, terkadang tidak dapat membangun aplikasi secara lokal. Masalah ini sudah hampir berumur 1 tahun tetapi belum ada pembaruan yang jelas tentang masalah tersebut. Secara pribadi, satu-satunya solusi yang dapat saya pikirkan adalah membagi aplikasi menjadi dua proyek sub Next.js karena saya khawatir suatu hari kami bahkan tidak dapat membangun aplikasi bahkan pada CI (dan kami sudah menggunakan VM untuk melakukannya).

Saya sangat menyesal menjadi orang jahat di sini, saya hanya mencari bantuan.

EDIT: kami memperbarui ke Next.js 9.3.3 tetapi belum ada peningkatan

Bisakah seseorang dari tim inti mengetahui masalah ini dan membantu kami untuk menentukan prioritas masalah?

Saya telah meminta Anda beberapa kali di utas ini untuk memberikan reproduksi lengkap atau memberikan aplikasi Anda. Kami tidak dapat menganalisis apa pun dalam aplikasi khusus Anda untuk melacak masalah dalam aplikasi Anda.
Kami telah mengubah generasi peta sumber di 9.4 btw jadi Anda harus meningkatkan ke versi terbaru.

Kasus FWIW seperti https://github.com/zeit/next.js/issues/7929#issuecomment -618297553 adalah loop tak terbatas yang dibuat di dalam aplikasi Anda dan kami tidak dapat mendeteksinya dengan baik (karena mereka akhirnya menjalani rendering React ).

Sejauh yang saya pahami, Next.js (sejak v9.0.0) tidak dapat mengoptimalkan memori aplikasi web yang besar. Proses build kami mencapai batas memori saat mulai mengompilasi bagian sisi server proyek.

Mengingat bahwa Anda tidak memberikan reproduksi, saya hanya dapat merujuk aplikasi kami sendiri.

Kami menjalankan jutaan permintaan di Next.js dan aplikasi yang kami jalankan memiliki 300+ halaman. Kami tidak memiliki masalah memori yang dilaporkan dari tim kami dan mereka bekerja di banyak halaman sepanjang hari.

Perhatikan bahwa ini bukan saya menyangkal mungkin ada masalah, saya hanya mengatakan tidak mungkin untuk melacak jika ada masalah jika Anda tidak akan memberikan reproduksi atau aplikasi yang jelas yang dapat kami profil.
Perhatikan juga bahwa saya bahkan tidak meminta itu menjadi konsultasi berbayar, kami akan melihat aplikasinya secara gratis.

Saya telah meminta Anda beberapa kali di utas ini untuk memberikan reproduksi lengkap atau memberikan aplikasi Anda. Kami tidak dapat menganalisis apa pun dalam aplikasi khusus Anda untuk melacak masalah dalam aplikasi Anda.

Orang lain telah menyediakan repositori di sini sejak saya membuka masalah ini. Itulah mengapa masalah dibuka kembali dan karena itu tidak ada label yang menyatakan bahwa ia memerlukan repositori untuk mereproduksi masalah tersebut.

Sejak itu dibiarkan terbuka

Saya tidak dapat menyediakan repositori karena aplikasi web adalah milik klien saya dan kode sumbernya ditutup.

Kami telah mengubah generasi peta sumber di 9.4 btw jadi Anda harus meningkatkan ke versi terbaru.

Apakah fitur ini memilih untuk ikut / menyisih? Saya menghapus pembuatan peta sumber (itu dilakukan melalui plugin) setelah saya membuka masalah (sangat lama) tetapi itu tidak banyak membantu.

Jika menurut Anda masalah ini tidak valid, harap tutup. Repo sudah lama dibagikan dan mungkin tidak valid lagi.

Saya dapat membantu dengan triaging, tetapi saya membutuhkan panduan.

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

Reproduksi tidak bisa dilakukan, makanya saya minta setiap orang yang melapor disini juga menyediakan reproduksi untuk menghindari kasus seperti ini. Juga potensi masalah ini menjadi 100% sama cukup rendah.

Apakah fitur ini memilih untuk ikut / menyisih? Saya menghapus pembuatan peta sumber (itu dilakukan melalui plugin) setelah saya membuka masalah (sangat lama) tetapi itu tidak banyak membantu.

Peta sumber selalu diaktifkan dalam pengembangan, kami beralih ke peta sumber eval.

Itulah mengapa masalah dibuka kembali dan karena itu tidak ada label yang menyatakan bahwa ia memerlukan repositori untuk mereproduksi masalah tersebut.

Saya membukanya kembali karena lebih banyak laporan terus masuk dan saya terus meminta reproduksi: https://github.com/zeit/next.js/issues/7929#issuecomment -568760542

Hanya ada 2 reproduksi yang disediakan di utas ini. Satu sama sekali tidak terkait dengan Next.js ( now dev konsumsi memori) dan yang lainnya tidak dapat dijalankan / dibangun.

Oleh karena itu mengapa saya sekali lagi meminta reproduksi penuh jika tidak, ini akan terus mustahil untuk diselidiki.

Saya tidak dapat menyediakan repositori karena aplikasi web adalah milik klien saya dan kode sumbernya ditutup.

Jangan ragu untuk menghubungi [email protected] dan kami dapat menyiapkan NDA, kemungkinan ini berarti kami harus melakukan konsultasi untuk Anda meskipun perlu waktu lama untuk menyiapkan semua ini hanya untuk membantu Anda dengan aplikasi khusus Anda dan Anda juga sedang membangun aplikasi untuk klien.

Saya menduga aplikasi ini baru saja mencapai batas ukurannya untuk mulai kehabisan memori. Anda harus menjalankan bangunan Anda dengan lebih banyak melalui NODE_OPTIONS=--max-old-space-size=4096 .

Atau, Anda dapat mengaktifkan fitur chunking baru kami:

// next.config.js
module.exports = {
  experimental: { granularChunks: true }
}

Ini tidak menyelesaikan masalah kami, FYI.

Adakah yang tahu jika masalah ini terjadi di server start inbuilt berikutnya?
yaitu: Next start daripada NODE_ENV=production node server.js" ?

Masalah saya muncul setelah membuat build. Di server khusus saya yang menjalankan "node server.js" itu membangun memori sampai saya menerima kesalahan itu dan proses dimulai ulang yang berarti kehilangan semua rute dan barang yang di-cache sehingga sangat lambat untuk pengguna pertama yang memasuki halaman setelah itu sebagai semua SSR terjadi.

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]

Ini adalah package.json saya

{
  "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"
  }
}

Bagi siapa pun yang mungkin berurusan dengan kehabisan memori next build , coba hapus .babelrc atau babel.config.js . Saya memiliki .babelrc untuk bagian terpisah dari proyek saya yang tidak terkait dengan Next.js, dan tidak setuju dengan next build . Dalam situasi saya, masalah hanya terjadi di Docker. Saya memperbaikinya dengan mengubah Dockerfile saya dari ini

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

untuk ini

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

Bagi mereka yang menggunakan pelari bersama di GitLab CI, pelari tersebut akan menghentikan proses pembuatan Anda dengan SIGABRT dan pada gilirannya memicu kesalahan ini. Kami beralih kembali ke pelari grup kami dan berhasil.

Jika ada di antara Anda yang menggunakan next-transpile-modules , solusi saya adalah mengaktifkan resolveSymlinks -setting (sejak v4.1.0) seperti ini:

// next.config.js
const withTM = require("next-transpile-modules")([
    "somepackage"
], {
    resolveSymlinks: true
})
module.exports = {
    ...withTM()
}

Saya pertama kali mengalami masalah yang dijelaskan di sini ketika somepackage menjadi "terlalu besar" (dari 500kb ke 700kb), sekarang tiba-tiba, semua memori saya (juga mencoba dengan opsi 8gb) tidak cukup untuk menangani ini .

Saya percaya bahwa ada beberapa loop yang disebabkan symlink yang menyebabkan memori membengkak secara eksponensial.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat