是否可以使用webpack加载twilio.js库?

时间:2015-05-20 11:56:57

标签: javascript twilio webpack

我需要的是一种方法,将我的所有javascript依赖项捆绑到一个javascript文件中Webpack(就像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库?

2 个答案:

答案 0 :(得分:3)

此答案适用于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测试版,他们将解决这些问题。

答案 1 :(得分:1)

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

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

  1. <script type="text/javascript" src="//static.twilio.com/libs/twiliojs/1.2/twilio.min.js"></script>添加到我的主.html页面
  2. 在客户端JavaScript中使用节点(服务器)脚本中的var twilio = require('twilio'); ... (例如,在其中添加Twilio调用API方法,可以使用here
  3. 等框架创建
  4. 如果您正在使用TypeScript进行节点脚本编写,请使用诸如本机TypeScript转换器Express之类的转换器(通过命令行很容易)。如果使用JavaScript,请使用tsc(我最喜欢的)或GulpJS来帮助您整合甚至运行节点服务器端脚本
  5. 使用Webpack进行其他任何操作
  6. 同样,我是新手,所以如果我说错了,我可以接受输入或更正。