我有一个sveltekit应用程序,其中我使用gunjs作为数据库与用户auth等. (这个错误问题在我添加gunjs auth之前不存在)
现在的问题是,当我使用vercel部署应用程序时,它会抛出这样的信息(500:REQ_SERVER_REQ):
`Unhandled Promise Rejection {"errorType":"Runtime.UnhandledPromiseRejection","errorMessage":"Error: Cannot find module './lib/text-encoding'\nRequire stack:\n- /var/task/node_modules/gun/sea.js","reason":{"errorType":"Error","errorMessage":"Cannot find module './lib/text-encoding'\nRequire stack:\n- /var/task/node_modules/gun/sea.js","code":"MODULE_NOT_FOUND","requireStack":["/var/task/node_modules/gun/sea.js"],"stack":["Error: Cannot find module './lib/text-encoding'","Require stack:","- /var/task/node_modules/gun/sea.js"," at Module._resolveFilename (node:internal/modules/cjs/loader:1134:15)"," at Module._load (node:internal/modules/cjs/loader:975:27)"," at exports.b (/var/task/___vc/__launcher/chunk-5UAC7W5H.js:1:1033)"," at /var/task/___vc/__launcher/bridge-server-BGIDXK2J.js:1:1443"," at Function.Re (/var/task/___vc/__launcher/bridge-server-BGIDXK2J.js:1:1809)"," at e.<computed>.L._load (/var/task/___vc/__launcher/bridge-server-BGIDXK2J.js:1:1413)"," at Module.require (node:internal/modules/cjs/loader:1225:19)"," at require (node:internal/modules/helpers:177:18)"," at USE (/var/task/node_modules/gun/sea.js:5:17)"," at /var/task/node_modules/gun/sea.js:189:44"]},"promise":{},"stack":["Runtime.UnhandledPromiseRejection: Error: Cannot find module './lib/text-encoding'","Require stack:","- /var/task/node_modules/gun/sea.js"," at process.<anonymous> (file:///var/runtime/index.mjs:1276:17)"," at process.emit (node:events:529:35)"," at emit (node:internal/process/promises:149:20)"," at processPromiseRejections (node:internal/process/promises:283:27)"," at process.processTicksAndRejections (node:internal/process/task_queues:96:32)"]}`
当我用npm run dev
美元在本地运行时,它就能工作
我的db init看起来像这样:
`import { writable } from 'svelte/store';
import Gun from "gun"
import "gun/sea"
import "gun/axe"
export const db = new Gun();
export const user = db.user().recall({sessionStorage: true});
export const username = writable('');
user.get('alias').on((v:string) => username.set(v))
db.on('auth', async() => {
const alias = await user.get('alias');
username.set(alias)
})`
当我查看node_modules/gun/lib文件夹时,文本编码模块是唯一一个有一个文件夹而不是. js模块文件的文件夹,在文件夹中有一个包含模块代码的index.js文件.但这不应该是问题
也许我用错误的方式创建DB...?
我试着安装文本编码模块,这只是导致更多的错误,我try 了不同的gunjs版本,没有改变,我固定的 node 版本18.20,也没有改变.
请帮助:/
编辑: 我还发现一个名为shin.js的不同库使用了文本编码模块,但通过require导入它,如果模块是文件,我认为这就不起作用了.
编辑2: sea.js文件还获取了包含require的模块,该模块的原始错误也来自... gunjs github上也有一个问题,关于这个相同的错误,但使用nextjs: issue