测试新的扩展程序框架加载器

Looker 扩展框架很快将使用新的加载机制。新的加载程序可能会导致现有扩展程序加载时发生意外行为和可能的错误。本页将介绍如何测试和更新扩展程序,本文介绍了在 Looker 环境中正式启用新的扩展框架加载器之前如何对其进行测试。

此更新的发布日期尚未确定。届时,我们将提供一个切换开关,方便客户暂时关闭新的加载方法。不过,在某些情况下,您需要启用新的加载技术来修正内容安全政策 (CSP) 违规行为并使用 <!DOCTYPE html> 前导代码。

可能会影响扩展程序的更改

下面列出了可能会影响扩展程序的扩展程序框架更改:

  • 为了解决 CSP 违规行为,系统会生成 HTML,以便在服务器上(而不是在浏览器中)加载扩展程序。此变化本身不应影响现有的附加信息。
  • 移除了 base 标记,这可能会影响自定义代码拆分。已移除 base 标记,因为它使用的内容违反了 CSP。不过,一些开发者可能实施了他们自己的依赖于 base 标记的代码拆分技术。请验证您的代码拆分代码是否仍然有效;如有必要,还应实现一些不依赖于 base 标记的技术。
  • 新加载器使用 <!DOCTYPE html> 前导代码。这可能会影响使用 height: 100%; 的组件。您可以使用 height: 100vh 缓解此问题。

使用新的加载方法测试扩展程序

新的加载技术要求您的 Looker 实例运行 Looker 22.4 或更高版本。它通过启动选项开启。启动选项会定义将用于加载扩展程序的网址。此网址的来源必须与 Looker 服务器的来源不同。必须执行此操作,这样才能安全地将扩展程序沙盒化。

您可以按照以下步骤为单个用户使用新的加载方法测试扩展程序,而不会影响系统的任何其他用户。具体方法是将扩展程序加载网址写入浏览器的会话存储空间。这一新机制将持续有效,直到用户的会话完成或用户从会话存储空间中删除该值。我们预计,经验丰富的开发者会使用此方法。

配置 HTTP 代理服务器

启用新的扩展程序加载方法之前,您需要在本地机器上运行代理服务器以模拟扩展程序加载服务。确保本地机器上已安装 Node.js,然后运行以下命令:

npx http-server --port 4000 --proxy https://experiment.dev.looker.com --proxy-options.secure false

https://experiment.dev.looker.com 替换为 Looker 实例的网址。您也可以更改端口号,但要确保该端口号与扩展程序开发服务器使用的端口号不冲突。

首次运行此命令时,系统会要求您安装 http-server 权限。

配置 HTTPs 代理服务器

某些环境可能会阻止混合使用 HTTP 和 HTTP 内容。在这种情况下,您需要为 HTTPS 服务器配置证书。要配置 HTTPs 代理服务器,您需要生成自签名证书。前提条件是在您的系统上安装 openssl。在您计划运行 HTTPs 代理服务器的目录中,运行以下命令:

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

这将生成两个文件:cert.pemkey.pem

要运行 HTTPs 代理服务器,请确保您已在本地机器上安装 Node.js,然后运行以下命令:

npx http-server --port 4000 -S -C cert.pem --proxy https://experiment.dev.looker.com --proxy-options.secure false

在使用代理服务器之前,您需要授权浏览器使用自签名证书。打开浏览器并输入 https://localhost:4000。在 Chrome 中,您可能会看到用于继续访问服务器的链接或按钮,或者您在浏览器窗口处于焦点状态时需要输入 thisisunsafe。在后一种情况下,文本不会显示,但可让您继续操作。

如需详细了解如何将 http-server 配置为使用 https,请访问以下网址:https://www.npmjs.com/package/http-server

开始测试

  • 如果您设置了 HTTP 代理服务器,请配置浏览器以使用代理,请使用以下网址:

        https://experiment.dev.looker.com/extensions/kitchensink::kitchensink/?LOOKER_EXTENSION_LOAD_URL=http://localhost:4000
        

    其中:

    • https://experiment.dev.looker.com 是您的 Looker 实例的网址。
    • /kitchensink::kitchensink 是您要测试的扩展程序的 ID。
    • http://localhost:4000 是代理服务器。如果您在此过程前面更改了端口号,请修改端口号。
  • 如果您设置了 HTTPs 代理服务器,请配置浏览器以使用代理,请使用以下网址:

        https://experiment.dev.looker.com/extensions/kitchensink::kitchensink/?LOOKER_EXTENSION_LOAD_URL=https://localhost:4000
        

    其中:

    • https://experiment.dev.looker.com 是您的 Looker 实例的网址。
    • /kitchensink::kitchensink 是您要测试的扩展程序的 ID。
    • https://localhost:4000 是代理服务器。如果您在此过程前面更改了端口号,请修改端口号。

系统会立即从网址中移除参数 LOOKER_EXTENSION_LOAD_URL。如前所述,代理服务器网址存储在会话存储空间中,并且在会话期间将保持有效状态。

停止测试

如需停止测试,请输入以下网址:

https://experiment.dev.looker.com/extensions/kitchensink::kitchensink/?LOOKER_EXTENSION_LOAD_URL=

此操作会将网址从会话存储空间中移除。同样,LOOKER_EXTENSION_LOAD_URL 参数将从网址中移除。