Ember Fastboot Jquery

Ember Fastboot Jquery,jquery,ember.js,prerender,Jquery,Ember.js,Prerender,我刚刚在我的项目中添加了ember cli fastboot(),以便为爬虫机器人提供预渲染服务器 完成以下安装步骤后,我在启动服务器时收到一条错误消息(ember fastboot--service assets): jQuery未定义 ReferenceError:未定义jQuery 电话:66304:16[…] 缓存里有东西要清理吗? 我是否缺少一些明显的东西?FastBoot在节点中呈现,特别是在V8虚拟机中,这意味着它没有访问DOM的权限,而DOM是运行jQuery所必需的。此外,作

我刚刚在我的项目中添加了
ember cli fastboot
(),以便为爬虫机器人提供预渲染服务器

完成以下安装步骤后,我在启动服务器时收到一条错误消息(
ember fastboot--service assets
):

jQuery未定义
ReferenceError:未定义jQuery
电话:66304:16[…]
缓存里有东西要清理吗?
我是否缺少一些明显的东西?

FastBoot在节点中呈现,特别是在V8虚拟机中,这意味着它没有访问DOM的权限,而DOM是运行jQuery所必需的。此外,作为一个沙盒vm,它不能访问运行FastBoot代码的同一全局命名空间(除非您显式地将其传递到沙盒中,请参阅上的“使用白名单节点依赖项”)

如果要通过jQuery节点模块传递jQuery并在应用程序代码中公开,您仍然无法在FastBoot模式下运行jQuery的大部分API,因为它严重依赖于在此环境中根本不存在的DOM API

但有时您需要在浏览器中执行一些DOM操作,以处理复杂的动画或用户交互。建议的解决方案是将所有需要DOM操作的代码保留在
didInsertElement
willInsertElement
组件生命周期事件处理程序中,这些事件处理程序显式不在FastBoot模式下运行

另一个不推荐的选项是,通过检查来包装对jQuery的错误调用,以确保您不在FastBoot中(请参阅上面用户指南中的“FastBoot服务”)

在这种情况下,您不需要将模块列入白名单,因为FastBoot永远不会执行依赖于jQuery的代码


旁注:Ember清晰地呈现HTML,它需要某种方法来构造类似DOM的结构。创建的FastBoot将在应用程序实例初始化时传递给渲染引擎。它是DOM方法的一个非常小的子集,用于构造层次结构,然后序列化为HTML字符串。

有人声称这为他解决了问题:
jQuery is not defined
ReferenceError: jQuery is not defined
at <anonymous>:66304:16 [...]