大家好,我是从nodejs开始的,我想我理解module.exports的工作原理,但是当在要求并在index.js入门文件中使用它之后,在另一个文件中使用相同的功能时,我首先得到的不是一个功能。我看到了一些类似的答案,但是使用了更复杂的代码,但我没有明白这就是为什么我在这里这么简单地要求它的原因。让我更详细地解释一下,如果它太基础了,就对不起。
我运行npm start并从index.js文件开始
Index.js
const { first } = require("./first");
first();
First.js
const { second } = require("./second");
function first(){
return second();
}
module.exports = {
first
}
Second.js
const { first } = require("./first");
function second(){
return new Promise((resolve, reject)=>{
setTimeout(()=>resolve(), 1500)
})
.then(()=> {
first()
})
.catch(err => {
// Here's the first is not a function
console.log("Error here!!: ", err)
})
}
module.exports = {
second
}
第二个.js文件的捕获中引发了错误。它说:这里出错!:TypeError:首先不是函数
答案 0 :(得分:0)
尝试这种方式
index.js
const first = require("./first");
first.first();
first.js
const second = require("./second");
module.exports.first=function(){
/* logic or code */
return second.second();
}
second.js
const first = require("./first");
module.exports.second=function(){
return new Promise((resolve, reject)=>{
setTimeout(()=>resolve(), 1500)
})
.then(()=> {
first.first()
})
.catch(err => {
// Here's the first is not a function
console.log("Error here!!: ", err)
})
}
答案 1 :(得分:0)
这对我有用,您需要在second.js中添加另一个anonnymus函数。
.then((good)=>{
()=>first()}).catch(err=>{console.log(err)})
}
这就是您的代码所需要的。
function second(){
return new Promise((res,rej)=>{
setTimeout(()=>{res(),1500})})
.then(()=>{()=>first()})
.catch(err=>{console.log(err)})}