簡體   English   中英

在node.js中導出並要求范圍

[英]Exports and require scope in node.js

與問題戰斗了5天。 我有3個文件,它們之間需要共享一個變量kvmIndex

getKvmIndex.js

var kvmIndex=[],
exports.kvmIndex = kvmIndex;
exports.getSNMP = function (callback) {
   async.each(switchIps, function(switchIp, callback1) {
   goGo(switchIp, callback1);
   }, function(err) {
        callback();
    })
};

match.js

var app1 = require("./app.js");
var kvmIndex;
exports.kvmIndex = kvmIndex;
...

exports.matchAll = function(callback) {
async.series([
    function(callback) {
        kvmIndex = app1.kvmIndex;
        decToHex(callback);
    },
    function(callback){
        matchSt('getPortToSt2', callback);
    },
    function(callback){
        console.log(kvmIndex);    //Here it defined! Works good.
        callback()
    }
])
callback();
}

app.js

var kvmSNMP = require('./getKvmIndex')
, match = require('./match')
, async = require('async')
, kvmIndex = [];
...
async.series([
function(callback) {
    kvmSNMP.getSNMP(callback);
},
function(callback) {
    exports.kvmIndex = kvmSNMP.kvmIndex;
    callback();
},
function(callback) {
    match.matchAll(callback);
},
function (callback) {
    kvmIndex = match.kvmIndex;
    callback();
},
function (callback) {
    console.log(match.kvmIndex); //Doesnt work(
    callback();
}
])

我在做什么:

  • 定義空白變量
  • 導出它
  • 在全球范圍內做事
  • 在app.js中訪問它

getKvmIndex.js中它可以正常工作,但在match.js中則不能。 有誰能夠幫助我?

您只需要在一個模塊(文件)中定義kvmIndex 將該模塊添加到其中,然后像您一樣將其exports 其它模塊(文件)需要require限定模塊kvmIndex ,並通過訪問使用它myModule.kvmIndex

筆記:

1)最好從getKvmIndex.js導出getKvmIndex() ,而不是直接從變量kvmIndex

2)您在match.js可能有一個錯誤-回調立即被調用。 您是否打算將callback和第二個參數傳遞給async.series()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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