Nuxt生成致命错误:接近堆限制的无效标记紧凑分配失败-JavaScript堆内存不足

时间:2018-09-06 13:44:20

标签: vue.js nuxt.js

我正在尝试nuxt generate我的静态(带有动态url参数)html页面。 这是我在nuxt.config.js文件中的路由配置

routes: function () {
      let domain = 'https://example.com'
      if (process.env.NUXT_ENV === 'dev' || process.env.NUXT_ENV === 'development') {
        domain = 'https://dev-example.com'
      }
      if (process.env.NUXT_ENV === 'local') {
        domain = 'http://localhost:3002'
      }
      let rooms = axios.get(domain + '/nuxt/rooms').then((res) => {
        if(res && res.data.length){
          return res.data.map((room) => {
            return '/manage/pro/room/' + room._id
          })
        }else{
          return []
        }
      }).catch(response => {
        console.log('errore room')
      });
      let bookings = axios.get(domain + '/nuxt/users').then((res) => {
        if(res && res.data.length){
          return res.data.map((user) => {
            return '/bookings/' + user.slug
          })
        }else {
          return []
        }
      }).catch(response => {
        console.log('errore rehearsal')
      });
      let user = axios.get(domain + '/nuxt/users').then((res) => {
        if(res && res.data.length){
          return res.data.map((user) => {
            return '/user/' + user._id + '/' + user.username
          })
        }else {
          return []
        }
      }).catch(response => {
        console.log('errore user public')
      });
      let posts = axios.get(domain + '/nuxt/posts').then((res) => {
        if(res && res.data.length){
          return res.data.map((post) => {
            return '/post/' + post._id
          })
        }else {
          return []
        }
      }).catch(response => {
        console.log('errore posts')
      });
      return Promise.all([rooms, posts, user, bookings]).then(values => {
        return values.join().split(',');
      })
    }
  },

一直很好,直到今天为止,该过程都取得了成功。这似乎需要太多的RAM内存。不知道为什么,也不知道如何解决此问题。 这是最后一个控制台输出行

2018-09-06T13:12:34.423Z nuxt:render Rendering url /manage/pro/room/5b3f26783e62155502337f8f

<--- Last few GCs --->

[14687:0x2c19ac0]   657918 ms: Mark-sweep 1339.9 (1440.7) -> 1328.1 (1440.2) MB, 2760.7 / 0.1 ms  (average mu = 0.224, current mu = 0.161) allocation failure scavenge might not succeed
[14687:0x2c19ac0]   661179 ms: Mark-sweep 1341.0 (1440.2) -> 1330.6 (1444.2) MB, 2752.4 / 0.1 ms  (average mu = 0.191, current mu = 0.156) allocation failure scavenge might not succeed


<--- JS stacktrace --->

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

    0: ExitFrame [pc: 0x5b702a041bd]
    1: StubFrame [pc: 0x5b702a14fb2]
Security context: 0x3e9218f9e589 <JSObject>
    2: rules [0x2590b4e7c449] [/node_modules/clean-css/lib/writer/helpers.js:~46] [pc=0x5b704716ec9](this=0x3e348f706519 <JSGlobal Object>,context=0x1a44edae1691 <Object map = 0x169e1dc614d1>,tokens=0x1806c1ded131 <JSArray[2]>)
    3: all [0x2590b4e7c749] [/node_modules/clean-css/lib...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: node::Abort() [node]
 2: 0x89375c [node]
 3: v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]
 4: v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]
 5: 0xe616b2 [node]
 6: v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [node]
 7: v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node]
 8: v8::internal::Heap::AllocateRawWithRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [node]
 9: v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [node]
10: v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [node]
11: 0x5b702a041bd

1 个答案:

答案 0 :(得分:0)

编辑您的library(coin) library(data.table) set.seed(1) inputDT = data.table(group = factor(c(rep('g1', times = 30), rep('g2', times = 30))), step = rep(rep(1:3), each=10, times=2), interventionStep = rep(2:3, each=30), val = c(rnorm(mean = 20, sd = 3, n = 10), rnorm(mean = 25, sd = 3, n = 20), rnorm(mean = 15, sd = 3, n = 20), rnorm(mean = 20, sd = 3, n = 10))) desiredOutputDT = data.table(group2 = factor(c(rep('g1', times = 2), rep('g2', times = 2))), step1 = rep(1:2,times = 2)) desiredOutputDT[,step2 := step1 + 1] for (rowInd in 1:nrow(desiredOutputDT)) { g = desiredOutputDT[rowInd,group2] s1 = desiredOutputDT[rowInd,step1] s2 = desiredOutputDT[rowInd,step2] desiredOutputDT[rowInd, stat := as.numeric(statistic(independence_test(val ~ step, inputDT[group == g & (step==step1 | step==step2)])), type="standardized")] } > desiredOutputDT group2 step1 step2 stat 1: g1 1 2 3.08815389 2: g1 2 3 -0.84987412 3: g2 1 2 0.04336604 4: g2 2 3 3.17319127 并修改您的启动脚本以使用带有package.json标志的节点 例如,您的package.json可能具有以下内容:

--max-old-space-size=4096

改为使用此:

"scripts": {
    "dev": "nuxt",
    "build": "nuxt build",
    "start": "nuxt start"
}

一些参考文献:https://medium.com/@vuongtran/how-to-solve-process-out-of-memory-in-node-js-5f0de8f8464c