RangeError [ERR_OUT_OF_RANGE]:“值”的值超出范围。它必须 >= 0 和 <= 4294967295。收到 9433906525

Posted

技术标签:

【中文标题】RangeError [ERR_OUT_OF_RANGE]:“值”的值超出范围。它必须 >= 0 和 <= 4294967295。收到 9433906525【英文标题】:RangeError [ERR_OUT_OF_RANGE]: The value of "value" is out of range. It must be >= 0 and <= 4294967295. Received 9433906525 【发布时间】:2019-12-26 03:52:02 【问题描述】:

我没有插入的值出现此范围错误。

const createTransaction = async (yodleeAccountId, transaction) => 
  try 
    const savedRecord = await YodleeTransaction.create(
      YodleeAccountID: 373,
      YodleeID: 1887219837,
      Amount: 40518.32,
      AmountCurrency: 'USD',
      BaseType: 'CREDIT',
      Container: 'bank',
      PostDate: '2016-03-19',
      OriginalDescription: 'info about transaction',
      SimpleDescription: 'info',
      CategoryID: '2',
      Category: 'giving idk',
      CategoryType: 'the important type',
    )
    console.log('post create')
    return savedRecord
   catch (error) 
    console.error('error finally caught', error)
    return error
  


YodleeTransaction 模型:

module.exports = (sequelize, type) => 
  return sequelize.define(
    'YodleeTransaction',
    
      ID:  type: type.BIGINT, primaryKey: true, autoIncrement: true ,
      YodleeAccountID:  type: type.BIGINT, allowNull: false ,
      YodleeID:  type: type.BIGINT, allowNull: false ,
      Amount:  type: type.DECIMAL(12, 2), allowNull: false ,
      AmountCurrency:  type: type.STRING(3) ,
      BaseType:  type: type.STRING(25), allowNull: false ,
      Container:  type: type.STRING(50) ,
      PostDate:  type: type.DATE, allowNull: false ,
      OriginalDescription:  type: type.STRING(800) ,
      SimpleDescription:  type: type.STRING(500) ,
      CategoryID:  type: type.INTEGER ,
      Category:  type: type.STRING(50) ,
      CategoryType:  type: type.STRING(50) ,
    ,
     freezeTableName: true, tableName: 'YodleeTransaction' 
  )

错误:

RangeError [ERR_OUT_OF_RANGE]:“value”的值超出范围。必须 >= 0 和

我知道 9433906525 以某种方式基于 Amount,因为当我更改 Amount 时,错误消息中的值会发生变化。 例如,如果我将金额从 40518.32 更改为 8989.33,则收到的新值为 10728568304。 新错误:

RangeError [ERR_OUT_OF_RANGE]:“value”的值超出范围。必须 >= 0 和

【问题讨论】:

【参考方案1】:

这似乎是 Sequelize 中的一个错误。 异步执行过多的插入或更新会导致这种情况发生。 我不知道具体如何解决这个问题,但我可以告诉你如何解决它。

上述创建错误的解决方法是使用bulkCreate,并传递一个对象数组。

如果您使用 t-sql 进行更新,则 Sequelize 不提供 bulkUpdate 方法。所以你应该在sequelize.query('UPDATE YodleeTransaction SET Amount=344.88')中手动写出更新查询。

【讨论】:

好像和这个有关:github.com/tediousjs/tedious/issues/474. 我想指出我的项目中存在同样的问题,它不使用 Sequelize。在寻找现有问题时,我开始认为这是一个缓冲区问题,这(可能)类似于 Sequelize 内部使用的问题。 @roshnet 嗯,这是一件乏味的事情。

以上是关于RangeError [ERR_OUT_OF_RANGE]:“值”的值超出范围。它必须 >= 0 和 <= 4294967295。收到 9433906525的主要内容,如果未能解决你的问题,请参考以下文章

Nowjs:[RangeError:超出最大调用堆栈大小]

Datepicker - RangeError:无效的时间值

RangeError,语法错误:无效的正则表达式

RangeError:超出最大调用堆栈大小

猫鼬:UnhandledPromiseRejectionWarning:RangeError:超出最大调用堆栈大小

RangeError:无效的数组缓冲区长度 - Meteor JS