2015-05-20 13 views
2

我需要的是一種將我所有的JavaScript依賴項與Webpack(與socket.io-client一樣)綁定到一個JavaScript文件中的方法,但是我無法通過twilio.js來完成。是否可以使用webpack加載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也是exsistes,但是這僅適用於node.js - 不僅僅是純客戶端JavaScript。

所以我的問題是,有沒有辦法要求與Webpack twilio.js庫?

回答

1

我知道這是遲到了,但我也是,只是與這個問題搏鬥。作爲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. 使用var twilio = require('twilio');一個節點(服務器)的腳本里面...... 在客戶端JavaScript (例如,在API方法內部添加Twilio調用,該方法可以使用框架創建,如Express
  3. 如果您碰巧在使用TypeScript進行節點腳本編寫,請使用轉譯程序,例如原生TypeScript轉譯程序tsc(從命令行輕鬆完成)。如果使用JavaScript,請使用GulpJS(我最喜歡的)或GruntJS來幫助你鞏固,甚至運行節點服務器端腳本
  4. 使用的WebPack爲別的

再說一遍,我是新來的這一點,所以我如果我錯誤地陳述了任何內容,可以打開輸入或更正。

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測試版,他們將解決這些問題。

+0

我錯過了一步嗎?我試圖在React Native應用程序中使用它,但我缺少twilio/util和其他一些twilio/*文件。 – Rjdlee

+0

在React Native中未經測試。只有一個構建的JavaScript文件,不是多個。 –

+0

如果您查看twilio-client-mirror/twilio.js的源代碼,您會發現它需要'./twilio/util'和其他類似文件的語句。 – Rjdlee

相關問題