Articles of 类

节点通过构造器创build实例

在尝试使用nodejs时,遇到了通过构造函数创buildisntances的问题。 我创build简单的购物车function。 我有文件cart.js var items = []; function addItem (name, price) { items.push({ name: name, price: price }); } exports.total = function () { return items.reduce(function (a,b) { return a + b.price; }, 0); }; exports.addItem = addItem; 我用节点运行它 var cart = require('./cart') 但是,如果我需要创build一个Cart的多个实例呢? 我试图重构我的代码,创build一个构造函数,它包含items[] addItem() and total()函数,如下所示: exports.Cart = function () { var items […]

不能实例化导出的自定义模块Nodejs的实例,它扩展了EventEmitter

社区。 我不能实例化导出的自定义模块Nodejs的实例。 我有2个文件:一个自定义testing模块“resource.js”和“ext-emitter.js” 在resource.js中创buildResource类,并从EventEmitter类扩展它。 // resource.js var util = require("util"); var eventEmitterInstance = require("events").EventEmitter; function Resource(m){ this.maxEvents = m; var self = this; process.nextTick(function() { var count = 0; self.emit('start'); var t = setInterval(function(){ self.emit('data', ++count); if (count === m) { self.emit('end', count); clearInterval(t); } }, 10); }); } util.inherits(Resource, eventEmitterInstance); module.exports = Resource(); 然后我导入上面的模块在下一个文件ext-emitter.js我尝试实例化扩展自定义模块资源()(它依次扩展EventEmitter类),但我得到一个错误:“资源”未定义“ […]

类属性不更新

我有一个.js对象的属性,当我问我时,它不会更新。 我是新的JavaScript世界,所以我希望我的问题不会太棘手。 首先,这是我的Node类的一部分: Node = function (label, vals, db, callback) { // attributes this.label = label; this.vals = vals; this.db = db; if (typeof calback == 'function') calback(); } Node.prototype.insert_db = function (calback) { var vals = this.vals; // Create a node console.log("1:"); // output print console.log(vals); // output print this.db.save(vals, function (err, node) { […]

nodejs事件 – EventEmitter – 理解类实例

我正在实例化一个事件发射器,并注意到这两行似乎工作正常。 任何人都可以澄清这两种方法之间的权衡或差异导入和实例化EventEmitter类? 1: var eventEmitter = new (require('events')).EventEmitter(); 2: var eventEmitter = new (require('events').EventEmitter)(); 我的拿: 在1中, (require('events'))应该返回events模块的输出。 然后.EventEmitter()引用那个类和new创build一个EventEmitter的新实例。 2, (require('events').EventEmitter) should return the exported EventEmitter class. Then (require('events').EventEmitter) should return the exported EventEmitter class. Then new …() creates a new instance of EventEmitter creates a new instance of 。

在nodejs中的父/子类层次结构

child.js class Child { constructor(){ this.helloWorld = "Hello World"; } run() { } } export default new Child(); parent.js import child from './child.js'; class Parent { constructor() { this.child = child; } } export default new Parent(); index.js import parent from './parent.js' console.log(parent.child.helloWorld); <– does not throws an error, displays "Hello World" console.log(parent.child.run); <– throws […]

在子模块nodejs中设置父类的属性

我相信有可能是一个结构问题,可以解决这个问题,但我不确定如何保持一个调用模块内的方法的父类的设置值。 我试图尽可能简化我的代码。 我有一系列我在课堂上跟踪并在一段时间内运行的任务。 每个任务从远程数据库中获取数据,然后对其进行处理。 而在这个例子中,我只需要设置task.fetching。 还有一些其他的值我想能够从runner.js文件中更新。 我应该注意的是,如果可能的话,我对如何解决这个问题感兴趣,而不是专门找一些能够处理运行任务的模块。 // task.js const runner = require('./runner'); class Task { constructor(params) { this.details = params.details; this.fetching = false; this.interval = null; } start() { this.interval = setInterval(() => { if (!this.fetching) { runner.run(this.details); } }, this.details.frequency * 1000); } } module.exports = Task; // runner.js const run = (task) […]

存储一个类实例成员函数的引用使得它的范围变得松散

我正在使用节点v8.1.3 我在文件utility.js有一个类Utility class Utility { constructor() { this.typeChecker = require('javascript-type-checker'); this.internalErrors = require('../constants/internalErrors'); this.axios = require('axios'); this.config = require('../config'); } getCurrentWeatherByLatLong(latitude, longitude) { if(!this.isValidLatitude(latitude)) throw this.internalErrors.ERR_LAT_INVALID; if(!this.isValidLongitude(longitude)) throw this.internalErrors.ERR_LONG_INVALID; const url = `${this.config.BASE_URL}?appid=${this.config.API_KEY}&lat=${latitude}&lon=${longitude}`; return this.axios.default.get(url); } isValidLatitude(latitude) { return (this.typeChecker.isNumber(latitude) && latitude >= -90 && latitude <=90); } isValidLongitude(longitude) { return (this.typeChecker.isNumber(longitude) && longitude >= […]

从node.js中的另一个自定义模块访问自定义模块的正确path表示法

我有我的node.js项目中的一些自定义类模块。 是否可以从另一个自定义模块访问自定义模块? 如果是这样,我可以使用什么path符号? 我似乎无法想出一个不会产生错误: Error: Cannot find module 'someModules/DB' 。 我可以导出和require('./someModules/DB')从我的根index.js脚本罚款。 但它不能从一些someModules/Table 。 这是我的目录结构: project root -index.js -someModules –DB —index.js –Table —index.js 我想从Table / index.js访问DB / index.js。 我尝试了一些明显的事情 const DB = require("/someModules/DB"); const DB = require("./someModules/DB"); const DB = require("../someModules/DB"); const DB = require("someModules/DB");

在模块中testingnode.js类

我正在写一个node.js模块,我的模块有一个私有类。 我试图写这个类的testing,但不知道如何做到这一点。 我的模块看起来像这样 var main = function(get_item){ var main_item = new MyClass(get_item); 返回main_item } 函数MyClass(item){ this.item = item; 返回this.init(); } MyClass.prototype = { init:function(){ 返回find_item(); }, find_item:function(){ //做了一堆东西来查找一个项目 }, update_item:function(){ / /一堆东西来更新项目 }, //这里有更多的方法 } module.exports = main //可能打开和closurestesting module.exports = new MyClass // ??? 不知道如何做到这一点 然后在我的spec文件夹里 var main = require(“./ modules / myClass”); 描述(“get […]

在节点应用程序中触发许多请求,导致套接字挂起/ ECONNRESET错误

我试图为我的应用程序写一个testing,在那里我使用了express-brute来防止暴力攻击。 我有以下testing: it('should return 429 status after 1000 attempts', function (done) { this.timeout(5000); var counter = 0; var makeRequest = function (count, done) { counter++; request(app) .post('/login') .send({ username: 'a+' + count + '@b.com', password: 'wrong' + count }) .end(function (err, res) { if (err) { console.log('failed request #', counter); return done(err); } if (counter […]