【问题标题】:Is it possible to load twilio.js library with webpack?是否可以使用 webpack 加载 twilio.js 库?
【发布时间】:2017-01-23 13:05:50
【问题描述】:

我需要一种将我所有的 javascript 依赖项捆绑到一个带有 Webpack 的 javascript 文件中的方法(就像使用 socket.io-client 一样),但我不能用 twilio.js 做到这一点。

我可以看到这里列出了最新的 twilio.js。: https://www.twilio.com/docs/client/twilio-js 作为脚本标签:

//static.twilio.com/libs/twiliojs/1.2/twilio.min.js

但这只是在这里构建真正的 twilio.js 库的加载器脚本:

https://static.twilio.com/libs/twiliojs/refs/82278dd/twilio.min.js

这些都不支持 Webpack。

https://github.com/twilio/twilio-node 也存在,但这仅适用于 node.js - 不仅仅是普通的客户端 javascript。

所以我的问题是,有没有办法通过 Webpack 要求 twilio.js 库?

【问题讨论】:

    标签: javascript twilio webpack


    【解决方案1】:

    此答案适用于 Twilio.js 客户端版本 1.3.16(script filedocumentation)。

    Twilio 代码库非常糟糕。他们不会将他们的代码发布到 npm,并且简单地从他们的 CDN 加载 twilio.js 文件会产生副作用,包括从 window 读取和循环浏览页面上的所有脚本标签。这意味着,即使有下面的答案,客户端代码也无法加载到节点中,阻塞服务器端渲染和测试等。

    我发布了代码的package to npm as a mirror,但使用起来并不简单。 Webpack 无法正确处理他们设置的任何虚假需求结构。首先,安装:

    npm install --save twilio-client-mirror
    

    然后使用,照常要求:

    import * as loadTwilio from 'twilio-client-mirror';
    

    但是,您实际上不能使用 loadTwilio 对象。您必须引用由脚本注入的全局 Twilio 对象:

    const Twilio = window.Twilio;
    Twilio.Device.setup(token);
    ...
    

    这是我第一次尝试将这个易碎的代码包含在现代代码库中。希望在即将到来的 1.4 测试版中,他们能够解决这些问题。

    【讨论】:

    • 我是不是少了一步?我正在尝试在 React Native 应用程序中使用它,但我缺少 twilio/util 和一堆其他 twilio/* 文件。
    • 在 React Native 中未经测试。只有一个构建的 javascript 文件,而不是多个。
    • 如果您查看 twilio-client-mirror/twilio.js 的源代码,您会发现它包含 './twilio/util' 和其他类似文件的 require 语句。
    • 是的,那些 require 语句指向同一个脚本文件中定义的模块。也许 React Native 环境(Node?)正在运行这些需求,而不是使用文件中存根的需求。我只是将 Twilio 源脚本复制到 NPM 包中,并没有对其进行修改。同样,这不是很好的代码,可能与这里有关。
    • 稍后我将不得不进行更多调试。谢谢指点。
    【解决方案2】:

    我知道这已经晚了,但我也只是在努力解决这个问题。作为 Node、TypeScript 和 Webpack 的新手,我无法理解 Webpack 应该用于客户端脚本,而 Twilio-node 库是一个服务器端库(如松散讨论的 here)。换句话说,您不应该在任何客户端脚本中使用require('twilio')...只能在Node 脚本中使用。

    我在以下方面取得了成功:

    1. <script type="text/javascript" src="//static.twilio.com/libs/twiliojs/1.2/twilio.min.js"></script> 添加到我的主.html 页面
    2. Node(服务器)脚本中使用 var twilio = require('twilio');...不是在客户端 JavaScript 中(例如,在 API 方法中添加 Twilio 调用,可以使用Express等框架创建)
    3. 如果您碰巧将 TypeScript 用于 Node 脚本,请使用转译器,例如本机 TypeScript 转译器 tsc(从命令行轻松完成)。如果使用 JavaScript,请使用 GulpJS(我的最爱)或 GruntJS 来帮助您整合甚至运行您的 Node 服务器端脚本
    4. 将 Webpack 用于其他任何事情

    再说一次,我是新来的,所以如果我陈述有误,我愿意提供意见或更正。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      • 2017-07-16
      • 2018-11-25
      • 2021-09-29
      • 2020-08-03
      相关资源
      最近更新 更多