从Fresh导入GUN的第一次尝试是将枪库从esm添加到import_map.json
,在使用GUN的简单示例中它可以正确工作。
{
"imports": {
...
"gun": "https://esm.sh/gun@0.2020.1237",
}
}
但当我想额外导入CCD_ 2时,出现了问题,导入import Sea from "gun/sea";
。
我得到了这个错误:
error: Uncaught (in promise) Error: Dynamic require of "./lib/text-encoding" is not supported
在GitHub上,当出现这样的问题时,我在导入SEA之前阅读了导入gun/lib/mobile
的内容。但这带来了一个额外的问题:
error: Uncaught (in promise) TypeError: Assignment to constant variable.
我检查了gun/lib/mobile
文件,它实际上包含了几行全局变量:
import Buffer from "buffer";
import { TextEncoder, TextDecoder } from "text-encoding";
global.Buffer = global.Buffer || Buffer.Buffer;
global.TextEncoder = TextEncoder;
global.TextDecoder = TextDecoder;
有没有机会让SEA在Fresh上发挥作用?
在import_map.json
文件的导入中添加以下行:
"@gun": "https://esm.sh/gun@0.2020.1237"
然后使用此导入语句在任何路线/组件中导入枪:
import GUN from "@gun"
用法(来自GUN文档(:
const gun = GUN();
gun.get('mark').put({
name: "Mark",
email: "mark@gun.eco",
});
gun.get('mark').on((data, key) => {
console.log("realtime updates:", data);
});
setInterval(() => { gun.get('mark').get('live').put(Math.random()) }, 9);