开玩笑测试致命 JavaScript 无效大小错误 174895934 错误

问题描述 投票:0回答:2

我一直在尝试使用 jest 运行单元测试。但我不断收到如下所示的致命错误:

#
# Fatal error in , line 0
# Fatal JavaScript invalid size error 174895934
#
#
#
#FailureMessage Object: 0x7ff7b06f7e90
 1: 0x10fa5ae4a node::NodePlatform::GetStackTracePrinter()::$_3::__invoke() [/usr/local/Cellar/node/17.7.1/bin/node]
 2: 0x1101a4a22 V8_Fatal(char const*, ...) [/usr/local/Cellar/node/17.7.1/bin/node]
 3: 0x10fc7b242 v8::internal::FactoryBase<v8::internal::Factory>::NewFixedArrayWithFiller(v8::internal::Handle<v8::internal::Map>, int, v8::internal::Handle<v8::internal::Oddball>, v8::internal::AllocationType) [/usr/local/Cellar/node/17.7.1/bin/node]
 4: 0x10fdfa930 v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::ConvertElementsWithCapacity(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, unsigned int, unsigned int, unsigned int) [/usr/local/Cellar/node/17.7.1/bin/node]
 5: 0x10fdf9522 v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int) [/usr/local/Cellar/node/17.7.1/bin/node]
 6: 0x10ff2cf3d v8::internal::Runtime_GrowArrayElements(int, unsigned long*, v8::internal::Isolate*) [/usr/local/Cellar/node/17.7.1/bin/node]
 7: 0x10f858ff9 Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit [/usr/local/Cellar/node/17.7.1/bin/node]
error Command failed with signal "SIGTRAP".

package.json

 "ts-jest": "27.0.0",
 "jest": "27.0.0",

增加最大堆大小不起作用。我该如何解决?

react-native jestjs ts-jest
2个回答
0
投票

可能是v8引擎的原因。减少数组的长度对我有帮助。就我而言,116597277(当然不是 32 位)是 k 的限制,但我无法找出原因或其他任何内容。

const somethingToTest = require('./somethingToTest')

describe('somethingToTest()', () => {    

test('linear array', () => {
    let arraysToTest = []
    const target = 91718346
    for(let i = 1; i<=100000000; i++){
      let littleArray = []
      for(let k = 1; k<=100000000; k++){
        littleArray.push(k)
      }
      arraysToTest.push(littleArray)
    }
    for (const arr of arraysToTest) {
      const expected = arr.indexOf(target)
      const actual = somethingToTest(arr, target)
      expect(actual).toEqual(expected)
    }    
})

0
投票

它看起来像应用程序中的 dep 循环。

仅在 CI 上遇到同样的问题,在本地计算机上我没有任何错误,我花了很多时间找出原因。

© www.soinside.com 2019 - 2024. All rights reserved.