問題タブ [nodevm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
226 参照

node.js - NodeJS ファイバーと VM サンドボックスを組み合わせる

次のような信頼できないコードを Node で実行したいと考えています。

ファイバーを使用して、同期動作が期待どおりに機能するようになりました。

問題は、コードをサンドボックス化する方法です。ファイバーを使用する必要があるため、非常に複雑になります。どうやって始めればいいのかよくわかりません。上記をvm2でサンドボックス化するにはどうすればよいですか? たとえば、次は明らかに機能しません。

( VM 内のサンドボックス化されたコードにはgreen_ledとが表示されないため、機能しません)。sleep

これはどのように行うべきですか?また...

  1. おそらく、ファイバーや実装green_ledなど、すべてを VM 内で実行する必要がありますか?
  2. それとも、VM によって実行されるコードを最小限に抑え、代わりに何らかの方法でホワイトリスト/プロキシを使用する方がよいでしょうgreen_ledsleep? そもそも繊維がどのように機能するかを理解するのは非常に困難です。
0 投票する
2 に答える
346 参照

node.js - promise チェーンを停止するか、promise チェーンを返す runInNewContext を停止します

vmを使用してコードを実行しているときに問題に直面していますrunInNewContext

カスタム コードは、ネストされている可能性があり、ネストされたコール スタックを持つことができる promise を返すことができます。コードは次のようになります

問題は、20 秒以上かかる場合にプロミスの処理を停止したいということです。

コードが再帰的で入れ子になった promise がある場合、スタックされて 20 秒でコール スタックを実行しようとするため、数分以上かかり、停止できず、最後にスタック オーバーフローの問題が発生します。

次の追加で試しましたPromise.race

コントロールを関数の外に残すように機能しますが、プロミスチェーンは実行を続けます。

を停止する方法はありcodePromiseますか? または Await でタイムアウトしますか?

0 投票する
0 に答える
234 参照

node.js - ノード VM と非同期関数

ノード vm で非同期関数を呼び出す次のノード コードを考えてみましょう。

コードの出力は次のとおりです。1、2、END、3

async main()出力が 1、2、3、END になるように、「END」が発生する前に関数が自然に終了したことを確認するにはどうすればよいですか?