当gatsby构建图像时,Node JS崩溃

时间:2019-06-29 11:50:48

标签: javascript node.js gatsby

当我运行gatsby development时,它运行良好,但是当我运行gatsby build时,节点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 个答案:

答案 0 :(得分:0)

您的项目有大量的内存(典型的WordPress问题,因为他们的服务器响应通常高于其他服务器)。

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

为防止并发请求过载processRemoteNode,您可以 调整200的默认并发下载量,方法如下: GATSBY_CONCURRENT_DOWNLOAD环境变量。

在运行命令中,设置可解决问题的值。就我而言,它是5

"develop": "GATSBY_CONCURRENT_DOWNLOAD=5 gatsby develop"