簡體   English   中英

獲取node.js范圍內的所有已定義變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM