正在获取TypeError:无法设置未定义的属性“数据”

时间:2019-08-18 20:07:18

标签: javascript node.js blockchain

压缩代码时,我很难找到在代码中定义数据的错误。我为我的代码编写了4个测试,而其中3个已经通过。我在测试3时遇到错误。

添加此选项可以解决此问题,但我正在尝试使其简洁。

blockchain.addBlock({data: 'Bears'});

blockchain.addBlock({data: 'Beets'});

blockchain.addBlock({data: 'Battlestar Galatica'});

这是我目前收到错误消息时遇到的情况。

describe('and the chain contains a block with an invalid field',()=>{
    it('returns false', () => {

        blockchain.chain[2].data = 'some-bad-and-evil-data';

        expect(Blockchain.isValidChain(blockchain.chain)).toBe(false);
        });
    });
FAIL ./blockchain.test.js
  ● Blockchain › isValidChain() › and the chain contains a block with an invalid field › returns false

    TypeError: Cannot set property 'data' of undefined

      54 |     it('returns false', () => {
      55 |
    > 56 |         blockchain.chain[2].data = 'some-bad-and-evil-data';
         |         ^
      57 |
      58 |         expect(Blockchain.isValidChain(blockchain.chain)).toBe(false);
      59 |         });

      at Object.it (blockchain.test.js:56:9)

1 个答案:

答案 0 :(得分:0)

似乎blockchain.chain的索引2处没有元素。通常,这是尝试访问数组中元素的字段时出现此错误的最可能原因。

换句话说

someCollection[index].someField

如果您看到包含UndefinedNullReferenceNullPointer个关键字的错误,则说明您的集合中没有index + 1个元素太多。