2016-01-06 8 views
5

電子からipcRendererモジュールをタイプスクリプトで取得して、現在のコンポーネントからコアに情報を送信し、情報をウィンドウ(電子クロムブラウザ)に戻すことを試みます。 tsコードをES5にトランスコードすることで、「モジュールが見つかりません」というエラーが表示されます。typescriptで電子モジュールをロードする方法

= CONST IPCが( '電子')を必要とするipcRenderer; `

更新:エラー "モジュールが見つかりません" およびこれの切り替えれる:

ERROR in ./~/electron/index.js Module build failed: Error: ENOENT, open '/.../node_modules/electron/index.js' @ ./app/components/search/search.ts 12:10-29

現在のelectron-apiからのものです。私もtypescriptからインポート構文を使用しようとしましたが、結果は同じです。

私はES5ファイルでelectron.ipcRendererモジュールを使用しようとしたが、htmlファイルに直接ロード/リンクされていた。

それが機能しました。どうして?

+0

あなたはTSとES6のすべてをサポートしている電子コンパイルモジュールを使ってみましたか? – frosty

答えて

4
+3

もう少し詳しく説明してください。 :) – stephanec

+2

私の場合は、webpackを使ってtypescriptコードをes5にトランスコードします。その方法で私は 'webpack.config.js'ファイルを持っています。その設定では 'webpackTargetElectronRenderer(config)'を通して 'config.target'に穴の設定を送る必要があります。 それは次のようになります: 'var config = {.....}; config.target = webpackTargetElectronRenderer(config); module.exports = config; ' –

1

私はelectron5.ipcRendererモジュールをES5ファイルで使用しようとしたが、htmlファイルに直接ロード/リンクされていた。

それはHTMLに動作しますが、TSに失敗した場合は、エラーがconst ipc = require('electron').ipcRenderer;ではないことを意味します。エラーは、ファイルをhtmlからロードする必要があります(require('electron')ではありません)。

2

ブラウザアプリで電子依存性は、それがnode_modulesからwebpackedではなく、実行時にロードされていないという意味、本当ではないので、必要の文は、「FS」は見つかりませんなどのエラーを引き起こしました私。

しかしあなたはこれでtypescriptですトリックをすることができます:あなたはそれが内部実行している場合にのみ電子によって拡張されたWebアプリケーションを、書いているならば、これはあなたドン以来、より良い方法である。また

if (typeof window['require'] !== "undefined") { let electron = window['require']("electron"); let ipcRenderer = electron.ipcRenderer; console.log("ipc renderer", ipcRenderer); }

コミュニケーションパーツを使用するときだけ、電子アプリケーションに依存関係として電子を追加する必要があります。

+0

ありがとうございます、これは明らかに文書化されていません。私はこれのために何時間も探してきました。私はおそらくよりエレガントな解決策があると感じるが、これは私が再び動くようになる。 – digitaldreamer

関連する問題