首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在类实例中没有定义require提供的函数?

为什么在类实例中没有定义require提供的函数?
EN

Stack Overflow用户
提问于 2021-09-30 16:54:52
回答 1查看 57关注 0票数 1

我问这个主要是为了检查一下,我不确定我是在哪里犯了错,还是这从根本上不起作用。

我正在将一些Java转换为Nodejs,一个名为Site的类通过dataFunctions.getSiteInfo(id)函数从数据库填充自身。它还存储一个Page实例列表。

问题是在创建Site的实例时,dataFunctions返回为未定义。

我是否误解了类和模块在这种情况下的工作方式?这个类的实例可以访问dataFunctions模块吗?同样,Site类是否也可以引用Page类?还是我犯了其他愚蠢的错误?

Site.js

代码语言:javascript
复制
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

代码语言:javascript
复制
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);
    },
};
EN

Stack Overflow用户

发布于 2021-09-30 17:00:12

根据提供的代码,我相信您忘记创建一个新的dataFunctions实例。

代码语言:javascript
复制
const df = new dataFunctions();
console.log(df);

如果dataFunctions提供静态函数,请确保getSiteInfo方法是静态的。

否则,可能需要更多详细信息。

编辑

它看起来像是项目结构和require路径不稳定,但这很难判断。

当我使用require语句推断出的项目结构运行所提供的代码时,我无法重现您的问题。

但是,我确实看到的一个问题是,您需要来自DataFunctions.js模块的Site.js模块和来自Site.js模块的DataFunctions.js模块,从而创建循环依赖关系。例如,可以通过将makeASite移到Site.js模块来尝试eliminating这些命令。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69396151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档