const aimTokenId = (await contractFM.totalSupply()).add(1);报Uncaught TypeError TypeError: (intermediate value).add is not a function
时间: 2024-09-30 11:08:44 浏览: 29
当你遇到 `const aimTokenId = (await contractFM.totalSupply()).add(1)` 报出 `Uncaught TypeError TypeError: (intermediate value).add is not a function` 的错误时,这通常意味着你在JavaScript代码中试图对一个非数值类型的值调用了 `add` 函数,但 `add` 是一个只存在于数字类型(如Number)上的方法。
`totalSupply()` 返回的是一个数值,但是由于 `await` 关键字,这里的表达式先计算了 `contractFM.totalSupply()` 的结果,而这个结果可能是Promise或者是其他非基本数据类型,比如数组、对象等。当尝试调用 `add` 时,因为这个中间值不是一个可以直接相加的对象,所以会抛出TypeError。
解决这个问题,你需要确认 `contractFM.totalSupply()` 是否确实返回了一个可以执行数学运算的值。如果返回的是Promise,你应该先解析它再进行加法操作:
```javascript
let totalSupply = await contractFM.totalSupply();
const aimTokenId = totalSupply + 1;
```
或者如果你确定总供应量应该直接加1,可以在调用时加上 `.then` 或者`.catch` 来处理异步结果:
```javascript
contractFM.totalSupply().then(total => {
const aimTokenId = total + 1;
}).catch(err => {
// 处理错误
});
```
阅读全文