导出并要求在节点.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();
})
};
匹配.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();
}
应用.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();
}
])
我在做什么:
- 定义空白变量
- 导出它
- 在全球范围内使用它做事
- 在应用程序中访问它.js
在getKvmIndex中.js它工作正常,但在匹配中.js没有。有人可以帮助我吗?
您需要
在一个模块(文件)中定义kvmIndex
,并且只需要一个模块(文件)。它那个模块,像你一样exports
添加到它。其他模块(文件)需要require
定义kvmIndex
的模块,并通过访问myModule.kvmIndex
来使用它。
笔记:
1)最好从getKvmIndex.js
导出getKvmIndex()
,而不是直接kvmIndex
变量。
2)你可能在match.js
中有一个错误——回调会立即被调用。您是否可能打算将callback
和第二个参数传递给async.series()
?
相关文章:
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 节点.js将变量显示为 HTML
- 如何解决'窗口未定义'终端上的节点JS出错
- S3文件上传文件对象使用节点js
- 在节点 js 中使用护照本地模块验证(登录)密码时出错
- 嵌套的promise节点js
- 使用节点JS发送电子邮件
- 节点JS重定向循环
- 起始节点.js用于并行的线程池
- 获取图像节点js的主色
- 调整节点js中的图像大小
- 节点JS express和控制台输出到命令行与浏览器
- 节点JS:时间机器坏了——timekeeper.travel不做时间旅行
- 如何访问日期并将其插入数据库?节点.JS&MongoDB
- 节点.js快速删除 req.body 不起作用
- 节点.js中的嵌套异步操作
- 如何在核心php应用程序中使用节点js json Web令牌库
- 使用节点js的Bootstrap和Jquery
- 节点.js加密输入/输出类型
- 节点.js在不可能的地方打印“未定义”