微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 TypeScript 中导入 ipfs

如何解决在 TypeScript 中导入 ipfs

使用 JavaScript/TypeScript 使用 requireimport 导入和模块初始化通常很简单。我在运行来自 JS IPFS website 的基本示例来初始化 ipfs 时遇到问题。

如果我按照一般说明进行操作,则会出现错误Module parse Failed: Cannot use keyword 'await' outside an async function (6:13)

这是关键代码

const IPFS = require('ipfs-core');
const ipfs = await IPFS.create();

如果我按照建议将 ipfs 创建放在 async 函数中,我只是推迟了不可避免的事情。如果我两次调用这样的函数,我会收到来自 Unhandled Rejection (LockExistsError): Lock already being held for file: ipfs/repo.lock错误。似乎我可以创建一个 hack 来测试是否创建了 ipfs 并将其全局初始化为一个模块为 null,但这仍然是一个 hack。

我应该如何在不出错的情况下实现或重构 const ipfs = await IPFS.create();

解决方法

可能你的 Node 版本是 14 之前的版本,并且不支持在顶级调用 await。您处于异步块的上下文中。您可以执行以下操作:

const IPFS = require('ipfs')

async function main() {
  const ipfs = await IPFS.create()
  /* Your code here */
}

// and now you can tell node to run your async main function...
main()

在 v8 引擎中查看 https://v8.dev/features/top-level-await 以获取有关它的更多信息。还发现了这篇关于 Node 14 支持的帖子:https://pprathameshmore.medium.com/top-level-await-support-in-node-js-v14-3-0-8af4f4a4d478

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。