【发布时间】:2021-09-30 16:54:52
【问题描述】:
我问这个主要是为了进行健全性检查,我不确定我是否在某个地方犯了错误,或者这根本不起作用。
我正在将一些 Java 转换为 Nodejs,一个名为 Site 的类通过 dataFunctions.getSiteInfo(id) 函数从数据库中填充自身。它还存储一个 Page 实例列表。
问题是创建 Site 实例时 dataFunctions 返回未定义。
我是否误解了在这种情况下类和模块的工作方式?此类的实例是否可以访问 dataFunctions 模块?同样,Site 类是否也可以引用 Page 类?还是我犯了其他一些愚蠢的错误?
网站.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);
},
};
【问题讨论】:
-
请发布您的项目结构
-
你有一个循环的 require 循环。不能那样做。 Site.js 需要 DataFunctions.js,而 DataFunctions.js 需要 Site.js。这里通常的解决方案是将两个模块想要使用的公共代码分解为第三个模块,每个模块都可以包含而不是相互包含。
-
用
module.exports.getSiteInfo = getSiteInfo和it will work替换那个导出
标签: javascript node.js javascript-objects node-modules