无法通过require从扩展文件创建javascript对象

时间:2015-11-16 21:32:21

标签: javascript node.js require

我在从外部javascript文件创建对象时遇到问题。

这是我的UsersCollection.js内容:

var self;

var UsersCollection = function() {
    this.users = [];
    self = this;
};

UsersCollection.prototype.add = function(user) {
    self.users.push(user);
};

这是我的node.js服务器文件片段

// server.js
var express = require('express');
var app = express();
var port = 8080;

var rooms = [];
var games = [];

app.set('view engine', 'ejs');

require('./logic/UsersCollection.js');
var usersCollection = new UsersCollection();

当我运行服务器时,我遇到错误:

var usersCollection = new UsersCollection();
                          ^
ReferenceError: UsersCollection is not defined

我做错了什么?

编辑: 谢谢大家,它的工作:) 我添加了

module.exports = UsersCollection;

到UsersCollection.js和

var UsersCollection = require('./logic/UsersCollection.js');
var usersCollection = new UsersCollection();

到server.js

3 个答案:

答案 0 :(得分:2)

您没有将所需文件分配给变量:

var UsersCollection = require('./logic/UsersCollection.js');
var usersCollection = new UsersCollection();

此外,在UsersCollection.js您需要导出UsersCollection

module.exports = UsersCollection;

答案 1 :(得分:1)

我没有看到您的UsersCollection.js文件中的导出,如:

module.export = UsersCollection

如果您在UserCollection.js文件中添加此行,则可以从另一个文件中请求该行。

我希望它会对你有所帮助。

由于

答案 2 :(得分:0)

我相信如果您要访问位于当前文件的父目录中的逻辑文件夹中的 UsersCollection.js 文件,您的require文件应如下所示

require('../logic/UsersCollection.js');