0
コードエディタを使用し、USERのコードを評価するプロジェクトで作業してください。応答を持たないAxiosを使用したPOSTリクエスト
私のバックエンド(Express)にルートと関数を作成し、関数がユーザーの記述コードを取得し、その値を評価して返します。
フロントエンドからのアキシャル(REACT)を使用してバックエンドに投稿要求を出しているため、ユーザーコードがエバークされ、応答がフロントエンドに返されます。
私が達成したこと: 投稿コードを介してバックエンドにユーザーコードを送信します。 コードは、サンドボックスを使用してバックエンドで評価されます。
何が問題になっていますか? 応答をフロントエンドに送り返します。 post reqは応答を返しません。
以下はコードです:考え/フィードバック?
BACKEND:
const express = require('express');
const codeRoutes = express.Router();
const codeHelper = require('../services/code/code-helper');
codeRoutes.post('/', codeHelper.codeEval, (req, res) => {res.json({
data: res.result
})
});
module.exports = codeRoutes;
ヘルパー関数:
const vm = require('vm');
let codeEval = (req, res) => {
let result;
let code = req.body.code;
const sandbox = {};
vm.createContext(sandbox);
result = vm.runInContext(code, sandbox);
console.log(result); // this does console.log in the terminal
return result;
}
module.exports = { codeEval };
FRONTEND:
handleExecuteCode = (code) => {
axios.post('/code', {
code: code,
}).then(res => {
console.log('frontend received--->', res)
}).catch(err => console.log(err));
}
<button onClick={() =>
this.handleExecuteCode(this.state.code)}>EXECUTE</button>
あなたの急な設定は全く間違っています。バックエンドコード全体を投稿できますか?あなたはバックエンドでPOSTリクエストを受け取りますか? – lukaleli
は実際にそれを理解しました。私の設定は正しいです。私は使用していなかったし、私のヘルパー関数でnext()を呼び出すので、何も返されませんでした。私はちょうどテストし、それは動作します。 – Ash