小编Rah*_*uly的帖子

另一个源文件中的node.js事件侦听器

我正在尝试设计一个场景,在特定事件被触发时,我想让一些听众执行一些任务.试图管理代码的SRP,我希望将侦听器放在不同的源文件中.我想知道使用事件Emitter是否可行.事件发射器只能在单个源文件上工作吗?

var events = require('events');
var em = new events.EventEmitter();

exports.saveScheme = function (req, res) {  

var dal = dalFactory.createDAL(constants.SCHEME);
return new Promise.resolve(dal.PromiseSave(req.body))
    .then(function(data){
        var schemeId = data._id;

        em.addListener('FirstEvent', function (data) {
            console.log('First subscriber: ' + data);
        });
        em.emit('FirstEvent', 'Test event emitter');

    }).catch(function(error){
        console.log(error);
    }); 
};
Run Code Online (Sandbox Code Playgroud)

我的其他源文件是

var emitter = require('events').EventEmitter;
var em = new emitter();

//Subscribe FirstEvent
em.on('FirstEvent', function (data) {
    console.log('First subscriber: ' + data);
});
Run Code Online (Sandbox Code Playgroud)

event-handling node.js eventemitter

7
推荐指数
1
解决办法
4620
查看次数

npm run build on windows 10 给出 This app can't run on your PC

尝试在我的系统上运行命令 npm run build 但不断收到此错误。尝试卸载节点但没有成功。任何指示都会有帮助

在此输入图像描述

node.js npm nvm windows-10 npm-scripts

7
推荐指数
2
解决办法
6346
查看次数

使用sinon来破坏ES6超级方法

我在使用Sinon存根基类方法时遇到了问题.在下面的示例中,我将对基类方法GetMyDetails的调用存根如下.我相信有更好的方法.

actor = sinon.stub(student.__proto__.__proto__,"GetMyDetails");
Run Code Online (Sandbox Code Playgroud)

而且这个价值也是最重要的.

我在javascript中创建了一个简单的类

"use strict";
class Actor {
constructor(userName, role) {
    this.UserName = userName;
    this.Role = role;
}

GetMyDetails(query,projection,populate,callback) {
    let dal = dalFactory.createDAL(this.Role);
    dal.PromiseFindOneWithProjectionAndPopulate(query, projection, populate).then(function (data) {
        callback(null,data);
    }).catch(function (error) {
        routesLogger.logError(this.Role, "GetMyDetails", error);
        return callback(error);
    })

}
}
 module.exports = Actor;
Run Code Online (Sandbox Code Playgroud)

现在我有一个扩展了Actor.js的子类

"use strict";
 class student extends Actor{
constructor(username, role) {
    super(username, role);
    this.UserName = username;       
    this.Role = role;
}

GetMyDetails(callback) {
    let query = {'username': this.UserName};
    let projection = {};
    let populateQuery = …
Run Code Online (Sandbox Code Playgroud)

tdd mocha.js sinon ecmascript-6

6
推荐指数
1
解决办法
2372
查看次数

打字稿错误TS2345错误:TS2345:类型'缓冲区'的参数不能分配给'string'类型的参数

打字稿新手.我正在从RabbitMQ通道读取一些数据并将其转换为JSON对象.在这一行我得到错误

let communicationInformation = JSON.parse(newCommunication.content);

TS2345:"缓冲区"类型的参数不能分配给"字符串"类型的参数.

我需要投射数据吗?我正在使用Typescript 2.4.1

 Amqplib.connect(amqpLibUrl, (err, connection) => {
if (!err) {
    connection.createChannel((err, channel) => {
        channel.consume('QueueName', newCommunication => {
            if (newCommunication != null) {
                let communicationInformation = JSON.parse(newCommunication.content);
                // Code 
            }
        })
    })
}
});
Run Code Online (Sandbox Code Playgroud)

node.js typescript

5
推荐指数
2
解决办法
1万
查看次数

即使在排除它们之后,打字稿也会在 node_modules 下编译类型

在尝试编译我的打字稿源代码时,我看到编译器也在尝试编译我的 node_modules 文件夹下的类型。我正在使用 typescript 2.6.1,我的 tsconfig 文件如下

 {
  "compilerOptions": {
  "allowSyntheticDefaultImports":true,
  "outDir": "./dist",
  "mapRoot": "./dist",
  "module": "commonjs",
  "target": "es6",
  "sourceMap": true,
  "sourceRoot": "./source",
  "removeComments": false
},
"exclude": [
  "node_modules",
  "test"
],
  "include": [
  "source/*.ts"
]
}
Run Code Online (Sandbox Code Playgroud)

当我运行以下命令“tsc -w -p tsconfig.json”时,出现以下错误

 node_modules/@types/es6-promise/index.d.ts(11,15): error TS2300: Duplicate identifier 'Promise'.
Run Code Online (Sandbox Code Playgroud)

typescript tsconfig

5
推荐指数
1
解决办法
6173
查看次数

nodemailer 和 zoho 电子邮件发出“530 必须先发出 STARTTLS 命令”。

我正在使用最新版本的 nodemailer 版本 4.1.0。我尝试使用此处提供的示例代码 https://nodemailer.com/smtp/

这是我的代码

 let transporter = nodemailer.createTransport({
        host: 'smtp.zoho.com',
        port:587,
        secure: false,           
        auth: {
            user: this.user,
            pass: this.password
        }
    });

     var mailOptions: nodemailer.SendMailOptions = {
        from: ****@***.com,
        to: test@abc.com,
        subject: 'Hello ?',
        text: 'Hello world ?', 
        html: '<b>Hello world ?</b>'
    };

   transporter
            .sendMail(mailOptions)
            .then(
                (info) => {
                  //  console.log(info);
                    resolve({status: info.messageId})
                }
            )
            .catch(err => {
             //   console.log(err);
                reject({status: err.toString()})
            })
Run Code Online (Sandbox Code Playgroud)

我收到以下错误。我已将安全标志设置为 false,并且还使用了 ignodeTLS。nodemailer 0.7.1 之前的版本没有任何问题。我是否错过了任何特定配置?

   { Error: Invalid login: 530 Must issue a STARTTLS command first. …
Run Code Online (Sandbox Code Playgroud)

zoho node.js nodemailer

4
推荐指数
1
解决办法
2588
查看次数

上载Golang文件的Mime类型检查

我正在尝试获取在服务器中上传的文件的mime类型。

.xlsx和.docx文件的mime类型来自application / zip。我试图解压缩文件并读取类型为“ _rels / .rels”的文件。我的疑问是,在读取此特定文件时,读取文件应保留的最大大小应该是多少?如果目标是“ xl / workbook.xml”,我可以假定它的类型是xlsx吗?

我的代码如下

 file, fileHeader, err := r.FormFile("file")

buffer := make([]byte, 512)
_, err = file.Read(buffer)
if err != nil {
    fmt.Println(err)
}

contentType := http.DetectContentType(buffer)
if contentType == "application/zip" {
    r, err := zip.NewReader(file, fileHeader.Size)
    if err != nil {
        fmt.Println(err)
    }
    for _, zf := range r.File {
        if zf.Name == "_rels/.rels" {
            fmt.Println("rels")
            rc, err := zf.Open()
            if err != nil {
                fmt.Println("Rels errors")
            }
            const BufferSize = 1000 …
Run Code Online (Sandbox Code Playgroud)

go mime-types

4
推荐指数
1
解决办法
2579
查看次数

使用 node.js 和 mongoose 的 mapReduce

我正在尝试计算每个地区的学生人数。我有一个看起来像的模型

var mongoose = require('mongoose');
var schema = mongoose.Schema;
var studentSchema = new mongoose.Schema(
{
 "name":String,
 "address" :{
     "locality":String
  }
});
module.exports = mongoose.model('Student', studentSchema);
Run Code Online (Sandbox Code Playgroud)

然后我有一些Node.js代码

var Student = require('../../../models/Student');
module.exports.getStudentsBasedOnLocality = function(){
var o = {};
o.map = function () {
    emit(Student.address.locality, 1)
}
o.reduce = function (k, vals) {
    return vals.length
}

Student.collection.mapReduce(o, function (err, results) {
    if(err) throw err;
    console.log(results)
})
};
Run Code Online (Sandbox Code Playgroud)

我得到的错误是。关于我可能做错了什么的任何提示?

类型错误

Cannot read property 'out' of undefined
at …
Run Code Online (Sandbox Code Playgroud)

mapreduce mongoose mongodb node.js

2
推荐指数
1
解决办法
6695
查看次数

MongoError:无法将几何投影到球形 CRS 中

我正在尝试在 Mongo 中存储实体的位置。我似乎只在输入的几个位置遇到问题。我得到的错误是

MongoError:无法提取地理键:无法将几何投影到球形 CRS:[26.1633829, 91.78194759999997]。索引有问题吗?我正在研究 mongodb 3.4 版

我的架构如下

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var modelSchema = new mongoose.Schema({

email: {type: String, lowercase: true},
username: {type: String, unique: true, lowercase: true, index: true},
branchName: String,
address: {
    address1: String,
    address2: String,
    locality: String,
    pinCode: Number,
    sublocality_level_2: String,
    sublocality_level_1: String,
    localityName: String,
    administrative_area_level_2: String,
    administrative_area_level_1: String,
    country: String,
    postal_code: String,
    geo: {
        type: [Number],
        index: '2dsphere'
    }
},
branchPAN: String,
branchType: String,        
});

module.exports = mongoose.model('SampleModel', modelSchema);
Run Code Online (Sandbox Code Playgroud)

geospatial mongoose mongodb node.js

2
推荐指数
1
解决办法
2207
查看次数