私はAtom Electronアプリケーションをビルドしています。今、私は私のwebviewsの1のpreload.jsでこれを持っている:Electron:外部スクリプトを読み込んで関数に渡す
var { requireTaskPool } = require('electron-remote');
var work = '';
var _ = require('lodash');
work = requireTaskPool(require.resolve('./local/path/to/js/file.js'));
function scriptRun() {
console.log('Preload: Script Started');
// `work` will get executed concurrently in separate background processes
// and resolve with a promise
_.times(1,() => {
work(currentTab).then(result => {
console.log(`Script stopped. Total time running was ${result} ms`);
});
});
}
module.exports = scriptRun;
scriptRun();
それは、ローカルスクリプトを取得し、バックグラウンド・プロセスでそれを実行します。
私のような外部ソースからスクリプトを取得する以外、私は、まったく同じことをしたい、私はこれを行うと、私のようなエラー得るので
work = requireTaskPool(require.resolve('https://ex.com/path/to/js/file.js'));
:
Uncaught Error: Cannot find module 'https://ex.com/path/to/js/file.js'
を外部スクリプトを読み込むにはどうすればよいですか?そして、私のwork
機能でロードされたスクリプトを使用してください。私の気持ちは、ローカルファイルでしか動作しないということです。 AJAXが答えの場合は、スクリプトを入手する方法の例を見てから、事前に実行することなくwork
に渡すことはできますか?
が、これは非常に便利です、ありがとうございました。しかし、最終的なパッケージ化されたアプリケーションでも、エレクトロンが外部のjsファイルを取得したいと思っています。これはサーバー上のファイルを編集できるようにするためで、ユーザーはアプリを再起動するたびに変更内容を確認できるため、更新する必要はありません。たぶんこれは可能ではないかもしれませんが、あなたがこれを行う方法を知っていれば私に知らせてください:) –
@TMack申し訳ありませんが、私はそのような状況についてあまり知らないと言います。しかし、私はこれが参考になると思います。あなたの要件をクリアしてみましょう。いくつかのURLにxというパッケージがあります。パッケージ内のファイルを更新し、電子アプリを再起動すると、新しい変更が適用されるはずです。私が正しいなら、私の答えを見てください。ここで最も簡単なのは、npm install x --saveを毎回実行してから、アプリケーションを実行します。このプロセスを自動化するには、package.jsonファイルの開始スクリプトにnpm install x --saveを入れます – Vishal