gpt4 book ai didi

javascript - 加载存储在 IPFS 上的 javascript 模块

转载 作者:行者123 更新时间:2023-11-30 13:54:16 24 4
gpt4 key购买 nike

假设我在 IPFS 上有 javascript 文件,例如 this .我想构建一段 javascript( Node )代码来检索 ipfs 哈希,然后必须加载指向的文件。到目前为止我正在做的:

node.get(fileHash, (err, files) => {
// some check for error
files
.filter(file => file.type === 'file')
.forEach(file => {
vm.runInThisContext(
code = file.content.toString('utf8'),
options = { filename: file.name }
);
});
});

我真的不想搞乱文件系统(这将必须在浏览器中运行)所以我想避免编写文件然后要求它们。

是否有更好的方法来加载存储在变量中的 javascript 代码(基本上)。我觉得我正在使用某种eval ...我不喜欢

最佳答案

您可以从 IPFS HTTP 网关加载模块

<script src="https://ipfs.io/ipfs/<cid>/mything.js" />

如果用户有ipfs-companion安装后,资源将从位于 localhost:8080 的用户本地 ipfs 网关获取,如果没有,将从位于 ipfs.io 的公共(public)网关获取。这对于 es 模块和 import flavor 可能很有趣

import foo from https://ipfs.io/ipfs/<cid>/index.js`

如果你想用js-ipfs加载资源在您的示例中,您可以使用 [ipfs.cat][2] 代替 ipfs.get 来获取响应。你必须执行某种形式的 eval 因为你没有要求浏览器获取脚本

// get the script
const data = await ipfs.cat('CidForYourScript')

// depending on how your script is packaged, eval it
const exports = (new Function(data.toString()))()

有关核心开发人员对这个想法的更多讨论,请参阅 js-ipfs 上的此 PR:https://github.com/ipfs/js-ipfs/pull/1830

有关 eval-ing js 的更多想法,请参阅:https://benclinkinbeard.com/posts/how-browserify-works/

关于javascript - 加载存储在 IPFS 上的 javascript 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57614232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com