当Gatsby构建图片时,Node JS崩溃

3
当我运行 "gatsby develop" 时,它正常工作,但当我运行 "gatsby build" 时,Node.js 崩溃出现以下错误:
    [==                          ]   46.026 s 69/896 8% Generating image thumbnails

<--- Last few GCs --->

[38861:0x102802000]    75001 ms: Scavenge 1286.0 (1422.9) -> 1285.5 (1423.4) MB, 4.1 / 0.0 ms  (average mu = 0.087, current mu = 0.045) allocation failure 
[38861:0x102802000]    75007 ms: Scavenge 1286.2 (1423.4) -> 1285.8 (1423.9) MB, 4.0 / 0.0 ms  (average mu = 0.087, current mu = 0.045) allocation failure 
[38861:0x102802000]    75012 ms: Scavenge 1286.5 (1423.9) -> 1286.0 (1424.4) MB, 4.0 / 0.0 ms  (average mu = 0.087, current mu = 0.045) allocation failure 


<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x222bc6edbe3d]
    1: StubFrame [pc: 0x222bc6edd3c6]
Security context: 0x39162a79e6e9 <JSObject>
    2: SourceMapGenerator_serializeMappings [0x3916d3cfa859] [/Library/WebServer/Documents/website.com/node_modules/source-map/lib/source-map-generator.js:~303] [pc=0x222bc7ff6c5c](this=0x3916dcf82
201 <SourceMapGenerator map = 0x39164e1fdda9>)
    3: SourceMapGenerator_toJSON [0x3916d3cfa8d9] [/Library/WebServer/...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x10003cf99 node::Abort() [/usr/local/bin/node]
 2: 0x10003d1a3 node::OnFatalError(char const*, char const*) [/usr/local/bin/node]
 3: 0x1001b7835 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
 4: 0x100585682 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/usr/local/bin/node]
 5: 0x100588155 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/usr/local/bin/node]
 6: 0x100583fff v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/usr/local/bin/node]
 7: 0x1005821d4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/bin/node]
 8: 0x10058ea6c v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
 9: 0x10058eaef v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
10: 0x10055e434 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/usr/local/bin/node]
11: 0x1007e6714 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
12: 0x222bc6edbe3d 
13: 0x222bc6edd3c6 
Abort trap: 6

我有很多来自WordPress的图片,它们位于文章中,所以我把上传文件夹移动到static/img/uploads这样,文章中的所有图片都正常工作,但现在无法构建并且崩溃了,包括Netlify上。

这是我在gatsby-config.js中的内容。

{
      // keep as first gatsby-source-filesystem plugin for gatsby image support
      resolve: 'gatsby-source-filesystem',
      options: {
        path: `${__dirname}/static/img`,
        name: 'uploads'
      }
    },

并且这个

{
      resolve: 'gatsby-transformer-remark',
      options: {
        plugins: [
          {
            resolve: 'gatsby-remark-relative-images',
            options: {
              name: 'uploads'
            }
          },
          {
            resolve: 'gatsby-remark-images',
            options: {
              // It's important to specify the maxWidth (in pixels) of
              // the content container as this plugin uses this as the
              // base for generating different widths of each image.
              maxWidth: 700,
              linkImagesToOriginal: false
            }
          },
          `gatsby-remark-images-medium-zoom`,
          {
            resolve: 'gatsby-remark-copy-linked-files',
            options: {
              destinationDir: 'static'
            }
          }
        ]
      }
    },

之前它还能工作,但我后来清理了文件夹以删除未使用的图片,现在就无法再构建了...有没有更好的方法从WordPress导入图片?(我不想从wp获取图片,因为我只想使用Gatsby并删除所有wp文件)

谢谢

1个回答

1

您的项目存在大量内存使用问题(这是典型的WordPress问题,因为他们的服务器响应通常比其他服务器更高)。

如所示,gatsby-source-filesystem Gatsby的文档添加了对并发下载的限制,以防止processRemoteNode的过载。为了修复和修改任何自定义配置,他们公开了一个GATSBY_CONCURRENT_DOWNLOAD环境变量:

为了防止processRemoteNode的并发请求过载,您可以通过GATSBY_CONCURRENT_DOWNLOAD环境变量来调整默认的200个并发下载。

在您的运行命令中,设置适合解决问题的值。在我的情况下,它是5

"develop": "GATSBY_CONCURRENT_DOWNLOAD=5 gatsby develop"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接