Reactアプリケーションでsocket.io-client
を使用しようとしていて、奇妙な問題が発生しています。パッケージャが存在しないファイルをインクルードしようとしないようにするにはどうすればよいですか?
if (typeof window === 'undefined') {
try {
NodeWebSocket = require('ws');
} catch (e) { }
}
window
は未定義ではありませんので、あなたはこのコードが何もしないと思うかもしれないが、あなたがなりたい:ディープ(socket.io-client
で必要)engine.io
内のコードの以下のビットでwebsocket.jsというファイルがあります違う。
私のpackager(これまでの私が知っている限り、Reactネイティブパッケージャ)はすべてのJavascriptファイルを調べて、import
とrequire
コマンドをすべて検索し、それらが参照するファイルをパッケージ化します。
ws
モジュールは、Node.jsのためのものとはもちろんで存在して反応しないurl.js
とhttp.js
などのNode.jsのモジュールを利用しますWebSocket.js
と呼ばれるファイルを、含まれているため、パッケージの試みは失敗します。
これらの5行を削除すると問題は解決し、すべてが機能しましたが、より良い方法が必要です。特定のモジュールを除外するようにパッケージャに指示することはできますか?
FYI React Native Product Painsに未解決の問題があります:https://productpains.com/post/react-native/packager-support-resolvealias-ala-webpack/ - そうではないようです素晴らしい回避策。 – jevakallio