【发布时间】:2021-11-10 20:08:21
【问题描述】:
我的 React 项目出现了一个我以前没有遇到过的问题。我很确定问题是在我将 React 更新到 v17.0.0 和许多其他库之后开始的。
基本上,我的一个页面有一个用于上传图像的输入,这使得文件成为一个数组缓冲区以上传到 IPFS。它曾经可以工作,但我最近再次对其进行了测试(在进行了多次包/库更新之后),现在它给了我错误TypeError: _utils_ipfs__WEBPACK_IMPORTED_MODULE_5__.default.files.add is not a function。
为了纠正这个错误,我尝试了npm update 以确保一切都是最新的,但这没有用。
这是我得到的控制台错误:
getHash NewReview.js:18
NewReview NewReview.js:30
React 5
invokePassiveEffectCreate
callCallback
invokeGuardedCallbackDev
invokeGuardedCallback
flushPassiveEffectsImpl
unstable_runWithPriority scheduler.development.js:468
React 3
runWithPriority$1
flushPassiveEffects
commitBeforeMutationEffects
workLoop scheduler.development.js:417
flushWork scheduler.development.js:390
performWorkUntilDeadline scheduler.development.js:157
我很确定NewReview.js 中与错误相关的部分如下:
import ipfs from "../utils/ipfs";
export default function NewReview() {
const [ipfsHash, setIpfsHash] = useState("");
const [buffer, setBuffer] = useState(null);
function getHash() {
ipfs.files.add(Buffer.from(buffer), (error, result) => {
if (error) {
console.error(error)
return
}
setIpfsHash(result[0].hash);
}});
useEffect(() => {
if (buffer) {
getHash()
}
});
// ...
这是ipfs.js 的样子:
const { create } = require('ipfs-http-client');
const ipfs = create({host: 'ipfs.infura.io', port: 5001, protocol: 'https'});
export default ipfs;
作为解决此问题的另一种尝试,我尝试使用ipfs.default.files.add,因为我在另一篇 Stack Overflow 帖子中看到了该建议作为解决方案,但不幸的是,这并没有奏效。同样,代码曾经完美地工作,所以我不确定这个问题的原因是由于代码的编写方式错误。
感谢您的帮助!如果您需要我详细说明任何事情,请随时询问。
【问题讨论】:
标签: javascript reactjs webpack typeerror ipfs