我有一個node.js網站,我在查詢字符串中傳遞了javascript。在eval中編譯coffeescript
然後我評估請求處理程序中的JavaScript。 (不安全的,我知道。)
// web.js
var express = require("express");
var logfmt = require("logfmt");
var app = express();
app.use(logfmt.requestLogger());
app.get('/', function(req, res) {
var code = req.query.code;
var result = eval("(function(req, res) {" + code + "})(req, res);");
res.send('Result: ' + result);
});
var port = process.env.PORT || 5000;
app.listen(port, function() {
console.log("Listening on " + port);
});
我希望能夠到的CoffeeScript進入查詢字符串並將它進行評估,但我不想改變Node.js的代碼在全部爲。因此,我需要圍繞咖啡文本打包,以便在eval時間將其轉換爲javascript,並在產生的javascript 中完成編譯和執行完全在eval內。
這可能嗎?
澄清:我不希望我的web服務器上的磁盤上存在coffeescript編譯器的來源。 (例如extras/coffee-script.js)我想將coffeescript編譯器的源代碼傳遞給eval塊的,所以編譯本身沒有任何依賴關係。然後我想執行結果的JavaScript。
coffeescript編譯器可能不適合查詢參數,所以概念上它可以通過POST主體或其他方式傳遞。
感謝您的回答。我更新了我的問題,以澄清我正在嘗試做的事情。你的回答是有幫助的,只是沒有讓我一路走到那裏。 – funroll
所以你想'eval' CoffeeScript,但你不想在任何地方使用CoffeeScript編譯器? –
我想將coffeescript編譯器源代碼傳遞給eval語句。對不起,如果最初不清楚。你的回答對我仍然很有幫助。 – funroll