我问这个主要是为了检查一下,我不确定我是在哪里犯了错,还是这从根本上不起作用。
我正在将一些Java转换为Nodejs,一个名为Site的类通过dataFunctions.getSiteInfo(id)函数从数据库填充自身。它还存储一个Page实例列表。
问题是在创建Site的实例时,dataFunctions返回为未定义。
我是否误解了类和模块在这种情况下的工作方式?这个类的实例可以访问dataFunctions模块吗?同样,Site类是否也可以引用Page类?还是我犯了其他愚蠢的错误?
Site.js
let Page = require('./Page.js');
let dataFunctions = require('../DataFunctions.js');
module.exports = class Site {
constructor(id) {
this.id = id;
this.pages = [];
console.log(dataFunctions);
this.siteInfo = dataFunctions.getSiteInfo(id);DataFunctions.js
let Site = require('./classes/Site.js');
function makeASite() {
let id = 2;
let site = new Site(id);
}
function getSiteInfo(id) {
etc etc
}
module.exports = {
getSiteInfo: function (id) {
return getSiteInfo(id);
},
};发布于 2021-09-30 17:00:12
根据提供的代码,我相信您忘记创建一个新的dataFunctions实例。
const df = new dataFunctions();
console.log(df);如果dataFunctions提供静态函数,请确保getSiteInfo方法是静态的。
否则,可能需要更多详细信息。
编辑
它看起来像是项目结构和require路径不稳定,但这很难判断。
当我使用require语句推断出的项目结构运行所提供的代码时,我无法重现您的问题。
但是,我确实看到的一个问题是,您需要来自DataFunctions.js模块的Site.js模块和来自Site.js模块的DataFunctions.js模块,从而创建循环依赖关系。例如,可以通过将makeASite移到Site.js模块来尝试eliminating这些命令。
https://stackoverflow.com/questions/69396151
复制相似问题