[英]Get all defined variables in scope in node.js
我正在嘗試獲取所有已定義的變量,我嘗試使用global
對象,但似乎缺少定義為var token='44';
的變量var token='44';
並且僅包括定義為token='44';
。 我正在尋找理想的東西是類似於php的get_defined_vars()
函數。 我需要訪問變量,因為我需要停止節點進程,然后在同一點重新啟動,而不必重新計算所有變量,因此我想將它們轉儲到某個地方,以便以后訪問。
如你所說
我想將它們轉儲到某個地方,以后再訪問。
似乎您應該為數據庫而工作(就像喬納森在評論中提到的那樣),但是如果這是一次性的事情,則可以使用JSON文件存儲值。 然后,您可以require
將JSON文件返回到腳本中,然后Node將處理其余的內容。
我不建議這樣做,但基本上會創建一個變量,該變量將保存您定義的所有數據/變量。 有些人可能將其稱為“ 上帝對象” 。 只要確保在退出腳本之前,將值導出到JSON文件即可。 如果您擔心應用程序崩潰,請更頻繁地執行對該文件的備份。
這是一個演示,您可以試用:
var fs = require('fs');
var globalData = loadData();
function loadData() {
try { return require('./globals.json'); } catch(e) {}
return {};
}
function dumpGlobalData(callback) {
fs.writeFile(
__dirname + '/globals.json', JSON.stringify(globalData), callback);
}
function randomToken() {
globalData.token = parseInt(Math.random() * 1000, 10);
}
console.log('token was', globalData.token)
randomToken();
console.log('token is now', globalData.token)
dumpGlobalData(function(error) {
process.exit(error ? 1 : 0);
});
語言本身是不可能的。
然而:
1.如果您可以訪問整個源代碼,則可以使用一些庫來獲取全局變量列表,如下所示:
var ast = require('uglify-js').parse(source)
ast.figure_out_scope()
console.log(ast.globals).map(function (node, name) {
return name
})
2.如果可以連接到node.js / v8調試器,則還可以獲得本地變量列表,請參閱node.js項目中的_debugger.js
源代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.