我尝试过
1.我试着通过if (browser)
解决它,更具体地说(<script context="module">
内部的load函数中的if (!browser) { let DailyIframe = await import('daily-co/daily-js) }
),所以代码总是在服务器上执行)。然后将其作为一个prop传递给一个组件。然而,尽管它在服务器上工作,本地dev环境重新运行load函数(因为它从来没有导入任何东西,所以必须返回一个空的prop)并覆盖DailyIframe的值(可能是Vite/SvelteKit的一个bug)。
1.我试着在一个端点导入库,例如api.json.js
,它总是在服务器上执行。但是,它必须返回一个json,我不能把整个库变量传递给它。
经过研究这似乎是来自Vite,SvelteKit和某些库的问题的组合,其中global
是未定义的:SvelteKit With MongoDB ReferenceError: global is not defined)
但我不能使用他的解决方案,将其放在一个端点,因为我需要DailyIframe和来自客户端的麦克风音频流来创建一个视频会议室
另外,为什么某些库Daily(以及其他相关的Stackoverflow帖子,MongoDB)首先抛出这个错误,而其他库可以安全使用?
无论如何建议是赞赏!
1条答案
按热度按时间ilmyapht1#
为什么?
Vite不包括节点内置变量的垫片。
阅读建议以了解:
无论如何建议是赞赏!
在
index.html
中添加:例如
App.svelte
:演示
https://stackblitz.com/edit/sveltekit-1yn6pz?devtoolsheight=33
日志预览