我需要的是一种方法,将我的所有javascript依赖项捆绑到一个javascript文件中Webpack(就像socket.io-client一样),但我不能用twilio.js。
我可以看到最新的twilio.js列于此处: https://www.twilio.com/docs/client/twilio-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库?
答案 0 :(得分:3)
此答案适用于Twilio.js客户端版本1.3.16(script file,documentation)。
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
个脚本。
我在以下方面取得了成功:
<script type="text/javascript" src="//static.twilio.com/libs/twiliojs/1.2/twilio.min.js"></script>
添加到我的主.html
页面var twilio = require('twilio');
... 不(例如,在其中添加Twilio调用API方法,可以使用here)同样,我是新手,所以如果我说错了,我可以接受输入或更正。