Node.jsで非常にプリミティブなオンラインインタープリタ/コンパイラを作成していますが、経験のために複数の言語が用意されています。コード。Eval()でエラーが発生するJavaScriptの構文が完全に
ユーザが投稿したとき、私は入力を受け取り、それを少しエスケープし、コマンドラインに直接送ります(恐ろしい練習ですが、私は後で新しいシステムに移ります直接CMD)これは二重引用符と\ n、\ rなどをエスケープします。
入力時に、私はchild_process.exec
コマンドでそれを(はい、私はコールバックを与えていますが、それはかなり長いものです。 tは考えるJSを扱うビルダーは一行だけ持って
let parentResults = cp.exec(`node ./builders/${this.builder}.js "${this.escapedCode}"`);
// First parameter represents the builder to run the user input with
// and escaped code is self-explanatory
)書き込む必要がある:
を今eval(process.argv[2]); // Already somewhat-escaped code
、私は
function foo(x) {
console.log(x);
}
foo(5);
ような何かを書く私は5
のコンソールで正しい出力を取得します。
しかし、私は
let foo = function(x) {
console.log(x);
}
foo(5);
のような何かをするとき、私は私が同様に矢印構文を使用する場合、同じことが起こる
console.log(x);
^
SyntaxError: Unexpected identifier
を言って、エラーを取得します。私はそれを上回っているかもしれない何か手がかりがありません。任意のアイデアや助け?
スチュアートの編集の前にコードの失敗に関するあなたの答えがより良い説明を与えたと感じたので、最良の答えとして選ばれました。 –