gpt4 book ai didi

node.js - 理解 NodeJS 中 require 的行为

转载 作者:行者123 更新时间:2023-12-04 09:06:44 25 4
gpt4 key购买 nike

我在 Node Project 中有两个 javascript 文件。
一种是路由器,里面有路由和相应的功能。
另一个是实用程序类,其中常用函数被编写为原型(prototype)。说 utilservice.getSomething();
第一个文件在第二个文件中调用 utilservice.getSomething()。
我在第二个文件中导入了第一个文件(这是不必要的和未使用的)。然后我在第一个文件中调用了一个 API。
我收到错误 500,说明 utilservice.getSomething() 不是函数。
我花了很多时间思考使用 Promise 出了点问题,并尝试使用 async 和 await 并陷入同样的​​错误。
最后,我删除了导入,发现 API 调用运行良好。
我的印象是 require 仅用于在另一个脚本中导入方法。但除此之外还有一些东西。网上有资源可以说明请求的目的。但我喜欢理解这种行为。
样本:
文件1.js

const utilService = require('../utils/utilService');

router.get('/something',function(req,res){
utilService.getSomething().then((data)=>{
//do something
})
});
文件2.js
const file = require('../file1');

function util(){}
util.prototype.getSomething = function(){
return "hello"
}
module.exports = new util();
我点击了/something API。我得到了 utilservice.getSomething 不是一个函数。

最佳答案

require通常用于导入其他模块和脚本,它还执行这些模块中的任何代码。这允许模块覆盖其他模块的属性和对象的原型(prototype)。模块不需要 module.exports有效才能进口。
前任:
文件1.js

module.exports = {
foo: ()=>{
console.log("hello");
}
};
文件2.js
const mod = require("./File1.js");
delete mod.foo;
index.js
const mod = require("./File1.js");
mod.foo(); // hello
require("./File2.js"); // undefined
mod.foo(); // mod.foo is not a function

关于node.js - 理解 NodeJS 中 require 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63427178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com