https://github.com/react-spring/drei/issues/25
https://github.com/react-spring/drei/issues/23
它似乎依赖于节点中不存在的document
。
我相信为了使三驾马车伪同构,它所要做的就是:
const linkEl = typeof document !== 'undefined' && document.createElement('a')
这将允许 ssr 正常运行。
感谢您的报告。 我是否正确假设 SSR 环境实际上不会尝试呈现文本? 上面建议的修复将防止初始脚本模块加载时出错,但稍后会在它实际尝试使用linkEl
时失败,所以我想确保这不是问题。
1b005ec 应该可以解决问题,但在发布 0.26.0 版本之前,我会通过一些验证感觉更好。
是的,这是正确的,它只是不会崩溃。 另一方面,客户有机会立即呈现一个视图,然后再补水。
我会请他们尝试一下,谢谢修复...
我已经继续发布了带有该修复程序的 0.26.0,我相当有信心在通过require()
在节点 repl 中对其进行测试后解决该问题。 如果它不能为您的用户解决问题,请重新打开它。 谢谢!
棒极了! 非常感谢,我也会重新发布我的东西。
可能相关,我正在使用nextjs,启动时出现以下错误。 在 v0.26 上
Troika createWorkerModule: web workers not allowed in current environment; falling back to main thread execution. ReferenceError: Worker is not defined
at supportsWorkers (/Users/mk/dev/workspace/dapps/gione/node_modules/troika-worker-utils/dist/troika-worker-utils.umd.js:417:20)
at defineWorkerModule (/Users/mk/dev/workspace/dapps/gione/node_modules/troika-worker-utils/dist/troika-worker-utils.umd.js:472:10)
at /Users/mk/dev/workspace/dapps/gione/node_modules/troika-worker-utils/dist/troika-worker-utils.umd.js:606:30
at /Users/mk/dev/workspace/dapps/gione/node_modules/troika-worker-utils/dist/troika-worker-utils.umd.js:2:66
at Object.<anonymous> (/Users/mk/dev/workspace/dapps/gione/node_modules/troika-worker-utils/dist/troika-worker-utils.umd.js:5:2)
@gtolarc那应该只是console.warn
不是硬错误,它会导致问题吗?
@gtolarc我可以看到该警告消息在服务器日志中会非常烦人,所以我继续在非浏览器环境中抑制它:3dedb8f2b338e9345c107831863152b115ca50d2
我已经发布了带有该更改的 0.26.1。
是的,我没有感觉到任何其他问题。 在 0.26.1 中,警告消息消失了。 谢谢! @lojjic
抱歉,重新打开这个。 我仍然在我的笑话测试中看到了 console.warning。 无论如何要压制这个?
我打开了一个小 MR,在控制台记录在 troika-worker-utils 中创建 Web Worker 失败之前检查进程 env 是否为“测试”: https ://github.com/protectwise/troika/pull/85