Worklight 6.2自上次修复包以来的常见环境部署问题:未定义WL



我最近安装了最新的Worklight修复包更新,现在正在运行v6.2.0.01.20141027-1531从那以后,我注意到在WL服务器上部署公共环境时出现了一个阻塞错误。

现在,当我部署我的应用程序("Run as>Build all environments",然后"Run on Worklight development server")时,在"Preview as common resources"或iPad/Android移动web环境中运行应用程序会出现以下Javascript错误:

WL is not defined

当我检查源代码时,我意识到head标记中缺少"Worklight generated"Javascript源代码。我应该看到这样的东西:

<script>
    // Define WL namespace.
    var WL = WL ? WL : {};
    /**
     * WLClient configuration variables.
     * Values are injected by the deployer that packs the gadget.
     */
    WL.StaticAppProps = {
        "APP_DISPLAY_NAME": "appname",
        "APP_ID": "project",
        "APP_SERVICES_URL": "/project/apps/services/",
        "APP_VERSION": "1.0",
        "ENVIRONMENT": "preview",
        "LOGIN_DISPLAY_TYPE": "popup",
        "LOGIN_POPUP_HEIGHT": 610,
        "LOGIN_POPUP_WIDTH": 920,
        "PREVIEW_ENVIRONMENT": "common",
        "WORKLIGHT_PLATFORM_VERSION": "6.2.0.01.20141027-1531",
       "WORKLIGHT_ROOT_URL": "/project/apps/services/api/app/common/"
    };
</script>

但在我的页面的源代码中没有这样的东西(这就是为什么没有找到WL的原因)。此外,它不包括worklight.js和wljq.js文件,这些文件应该在构建阶段动态添加(据我所知)。我的index.html内容是"香草",它解释了为什么什么都不起作用。

因此,我决定检查在构建阶段生成的bin档案。碰巧app-common.lapp存档包含正确生成的源代码,其中包含Worklight生成的所有内容。在部署步骤中似乎出现了问题。我试图在WL控制台中手动导入它,但不幸的是,它也不起作用(结果相同)。

我没有设法重现创建新项目的问题,看起来这只是在Worklight更新到最新的修复包版本之后发生的。因此,提供一个示例项目是很复杂的。

注意:一旦在实际设备上运行,一切都会很好。在我的情况下,只有共同的环境被打破了。但我的一位同事也注意到了其他环境中的这个问题,所以……如果我能在其他环境中复制它,我会告诉你的。

感谢您的帮助,请询问您是否需要我的更多输入。

  1. 您不需要先"构建所有…",然后再"在…上运行"。这只是重复相同的步骤,因为"在Worklight Development Server上运行"意味着"构建项目工件(.wlapp文件、.war文件),然后部署它们"。

  2. vanilla index.html包含对initoptions.js、main.js、main.css和messages.js的引用。对于预期内容和预期位置,您的措辞有点混乱。

无论如何,请尝试以下操作:

  1. 关闭Eclipse
  2. 转到tmp文件夹并删除wlBuildResources文件夹
  3. 打开Eclipse并尝试以下两条路径:

    • 右键单击应用程序文件夹>Run As>Run on Worklight Developer Server>Open Worklight Console>预览为通用web资源
    • 右键单击应用程序文件夹>运行方式>预览

告诉我哪一个失败了,如果有的话。

最新更新