如何在NodeJS中使用JavaScript window对象?Shopify嵌入式应用开发问题
问题解答
关于教程使用window对象的原因
你对教程的「NodeJS开发场景」定义存在理解偏差:这里的NodeJS指的是嵌入式Shopify App的后端服务采用NodeJS技术栈开发,你贴出的代码本身是前端浏览器侧运行的逻辑,不属于后端NodeJS的执行范围。
OAuth阶段需要判断当前页面是直接在浏览器打开,还是嵌套在Shopify后台的iframe内,再执行对应的跳转逻辑,这类和浏览器上下文、页面跳转相关的逻辑天然需要调用浏览器宿主提供的window全局对象,不存在设计错误。
代码在NodeJS环境运行的解决方案
这段代码原本就不应该在NodeJS后端环境执行,按照实际开发场景调整即可:
- 拆分前后端职责:NodeJS后端只负责拼接生成符合要求的
permissionUrl(包含apiKey、授权范围、回调地址等参数的授权链接),将生成好的地址传递给前端侧 - 把你贴出的跳转判断逻辑放到App的前端入口代码中执行即可,如果你用的是Next.js、Remix这类支持SSR/SSG的全栈框架,要把这段逻辑包裹在客户端专属的生命周期钩子(比如
useEffect)中,避免服务端渲染阶段执行触发未定义报错。
用jsdom模拟window对象的方案没有实际意义:这段逻辑的核心目的是触发浏览器跳转,模拟window对象无法实现真实的跳转效果,属于无效尝试。
内容的提问来源于stack exchange,提问作者IonicMan
相关产品推荐
相关产品推荐

