无法从父作用域访问js所需的节点
所以这是我的代码的样子:
const mod = require("./module.js")
let functionA = () => {
return new Promise((resolve, reject) => {
databasequery("sql", (response) => {
databasequery("sql", (response) => {
console.log(mod)
});
});
});
}
[当我调用此函数A时,console.log()打印{}
,就像mod
是空对象一样。但是,当我将mod定义移入函数范围时:
let functionA = () => {
const mod = require("./module.js")
return new Promise((resolve, reject) => {
databasequery("sql", (response) => {
databasequery("sql", (response) => {
console.log(mod)
});
});
});
}
突然,我的console.log向我输出了期望的对象,以及在模块中导出的功能。
任何人都可以解释为什么更改模块范围突然使所有工作正常/中断吗?
注意:代码中没有其他地方,我不会设置/创建mod
变量。
注2:显然,它们既不是函数和模块的真实名称,也不是实际内容,我的查询函数看起来也不同,但是我尝试使回调的层次结构和承诺保持不变。
注3:这是循环/递归的要求,但我不明白为什么会是一个问题。
编辑1:从所需模块中导出了一些功能。在我的模块源代码中,导出看起来像这样:
module.exports = {
"createInstance": createInstance,
"getCurrentWebsocket": getCurrentWebsocket
};
编辑2:我报告了nodejs
编辑3:module.js代码:pastebin/QxmxDfhm
回答如下:我为您提供了一个很好的解释,为什么会这样。在文章末尾还提供了解决方案。希望能帮助到你。 article
无法从父作用域访问js所需的节点
所以这是我的代码的样子:
const mod = require("./module.js")
let functionA = () => {
return new Promise((resolve, reject) => {
databasequery("sql", (response) => {
databasequery("sql", (response) => {
console.log(mod)
});
});
});
}
[当我调用此函数A时,console.log()打印{}
,就像mod
是空对象一样。但是,当我将mod定义移入函数范围时:
let functionA = () => {
const mod = require("./module.js")
return new Promise((resolve, reject) => {
databasequery("sql", (response) => {
databasequery("sql", (response) => {
console.log(mod)
});
});
});
}
突然,我的console.log向我输出了期望的对象,以及在模块中导出的功能。
任何人都可以解释为什么更改模块范围突然使所有工作正常/中断吗?
注意:代码中没有其他地方,我不会设置/创建mod
变量。
注2:显然,它们既不是函数和模块的真实名称,也不是实际内容,我的查询函数看起来也不同,但是我尝试使回调的层次结构和承诺保持不变。
注3:这是循环/递归的要求,但我不明白为什么会是一个问题。
编辑1:从所需模块中导出了一些功能。在我的模块源代码中,导出看起来像这样:
module.exports = {
"createInstance": createInstance,
"getCurrentWebsocket": getCurrentWebsocket
};
编辑2:我报告了nodejs
编辑3:module.js代码:pastebin/QxmxDfhm
回答如下:我为您提供了一个很好的解释,为什么会这样。在文章末尾还提供了解决方案。希望能帮助到你。 article