0

Monaco エディターを立ち上げて Electron で実行したいと考えています。モナコの電子の例を見つけましたが、私のアプリでは動作しません。

私が得るのは次のようなエラーだけです:

"loader.js:1817 Uncaught Error: Unrecognized require call"

"angular.js:13920 Error: Check dependency list! Synchronous require cannot resolve module 'fs'. This is the first mention of this module! at e.synchronousRequire (loader.js:1063)"

monaco の loader.js がスクリプト ファイルとして含まれていなければ、すべて正常に動作しています。

「fs」モジュールをインクルードしようとすると、ファイルの先頭にある AngularJS サービスの 1 つにエラーが表示されます。

var fs = require("fs");

しかし、前述のように、monaco loader.js ファイルが含まれていなくても、これは正常に機能します。

どうすれば修正できますか?私は自分の Electron アプリにモナコ エディターを含めたいと思っています。ACE エディターに比べてアプリが簡素化されます。

4

4 に答える 4

0

Node.js のrequire関数がloader.js1 つ上書きされているようです。html に直接ロードする代わりに、node モジュールとしてロードします。

var loader = require('loader');
loader.config({
    // ...
});
loader(['an/amd/module'], function(value) {
    // code is loaded here
});

詳細については、vscode-loader github ページを参照してください。

于 2016-08-24T09:25:13.110 に答える
0

私は NW.JS で Monaco を使用しているため、エディターを使用するための Electron の要件は似ています。これには、Monaco loader.js スクリプトをロードする前に、現在のコンテキストの require 関数を永続化する必要があります。このスクリプトは、カスタムのモナコ AMD ローダーをグローバルな require に設定するためです。loader.js をロードした直後に、Monaco ローダーを別個のグローバル変数 (おそらく meRequire) に永続化し、最初に永続化されたものに NW.JS グローバルの require を復元します。

<script type="text/javascript">
    // persist global require function before monaco loader.js overwrites it
    tempRequire = require;
</script>
<script src="https://microsoft.github.io/monaco-editor/node_modules/monaco-editor/min/vs/loader.js" type="text/javascript"></script>
<script type="text/javascript">
    // persist monaco's custom loader
    meRequire = require;
    // restore global require function
    require = tempRequire;
    // configure monaco's loader
    meRequire.config(
    {
        baseUrl: 'https://microsoft.github.io/monaco-editor/node_modules/monaco-editor/min/'
    } );
</script>

エディター インスタンスを作成するには、meRequire を使用するだけです

meRequire( [ 'vs/editor/editor.main' ], () =>
{ 
    // create an editor instance
    let editor = monaco.editor.create( document.getElementById('elementId'), {} );
})

Monaco-editor インスタンスを作成するためのノックアウト バインディングを作成し、GitHub に配置しました。ノードや npm パッケージを使用せず、すべてのソースをダウンロードします。https://github.com/simpert/MonacoEditorKnockoutBindingHandler.gitで見つけることができます。

また、エディターのプレイグラウンドは、エディターの使用方法の例の優れたソースであり、GitHub のサンプルは、NW.JS と Electon の使用例を示しています。

于 2017-11-28T23:05:36.203 に答える