【问题标题】:SuperDevMode not working with nested scriptSuperDevMode 不适用于嵌套脚本
【发布时间】:2017-01-19 19:00:06
【问题描述】:

我正在尝试让 SuperDevMode 在具有多个模块的 GWT-2.6.1 上工作。

我遇到了一个问题,即 SuperDevMode 插件似乎没有拾取存在于 DOM 中不同级别的模块。例如在生成的 .nocache.js 文件中有以下行:

var o=window;

这个窗口包括一个:

__gwt_activeModules 

包含该页面中存在的模块的变量,因此当小书签被激活时,它会找到相关模块并将其替换为在代码服务器上运行的 .nocache.js 文件(我相信!)

但是,当我尝试重新编译存在于 DOM 中不同级别的模块时会出现问题 - 因为 nocache.js 窗口引用不同 - SuperDevMode 插件只能看到顶级模块。这是插件的限制还是我配置错误?

谢谢。

【问题讨论】:

  • 我建议迁移到 GWT 2.7 来运行 SDM。 2.6.1 的 bug 更多。 SDM 在 GWT 2.7 中运行得越来越好。听起来您可能正在文档中的某个 iframe 中运行应用程序(模块)?如果是这种情况,那么它就无法检测到(使用小书签,在 2.7 中可以正常工作)。如果您使用的是 2.7,我建议您使用 -war /path/to/war/ouput/dir。例如在youtube.com/watch?v=HfucNtGXLYY 使用外部网络服务器。如果这没有帮助,您的网络服务器设置如何,您使用的是外部还是内置的码头服务器?
  • 嗨,我在 JBOSS 上托管我的 .WAR 文件并使用 Eclipse Jetty 实例启动代码服务器!

标签: javascript java google-chrome gwt gwt2


【解决方案1】:

如果 SDM 代码服务器与 Web 服务器在同一 IP 上运行,那么我建议使用带有 -war /path/to/war/output/dir/on/jboss 的 DevMode,以便在启动代码服务器时使用它将包含 sdm init 的 [module].nocache.js 写入 war 输出目录。这意味着当它加载时它将编译并刷新编译。

我更喜欢使用代码服务器启动器,因为它更容易配置外部服务器。 GWT Eclipse 插件有一个用于代码服务器的启动器,它不是 -war,而是调用 -launcherDir。

如果 Web 服务器在不同的 ip 上,则需要使用代理返回代码服务器。这会将 9867 请求路由回您的本地代码服务器。或者修改并更改 [module].nocache.js 中的主机名。我正在为此设计一个 hack,并将展示如何在 GWTCon 上运行它。如果服务器运行时是从 Eclipse 运行的,则不需要这样做,因为代码服务器和 Web 服务器都绑定在同一个 ip 上。

这是一个视频,在同一 IP 上具有一个简单的外部 Web 服务器。相同 IP 上的任何 Web 服务器都可以产生相同的效果。 https://www.youtube.com/watch?v=HfucNtGXLYY

【讨论】:

  • 我的一个模块似乎可以正常工作,但是第二个模块出现了一些 RPC 错误 =(
  • 文档中是否嵌入了多个project.nocache.js?
  • 我假设有。在这种情况下,一次只使用一个 SDM,编译其他的并在 web 模式下运行。
  • 嗨,是的,不止一个。而且我尝试过使用单个 SDM 但没有运气,唯一可行的解​​决方案是将
  • 如果只有一个模块在 SDM 中运行,其他模块在 web 模式下运行,并且应用程序/模块之一的 project.nocache.js 具有 sdm 初始化例程,并且在那个 nocache.js 文件中,hosteName指向代码服务器地址,我觉得应该可以。
猜你喜欢
  • 2016-01-24
  • 2020-11-20
  • 2013-12-04
  • 2019-07-07
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多