Articles of javascript

Node.js EventEmitter:如何将类上下文绑定到事件侦听器,然后删除此侦听器

有没有办法访问事件监听器方法中的类上下文有可能删除监听器? 例1: import {EventEmitter} from "events"; export default class EventsExample1 { private emitter: EventEmitter; constructor(private text: string) { this.emitter = new EventEmitter(); this.emitter.addListener("test", this.handleTestEvent); this.emitter.emit("test"); } public dispose() { this.emitter.removeListener("test", this.handleTestEvent); } private handleTestEvent() { console.log(this.text); } } 在这个例子中,删除侦听器的工作,但handleTestEvent()方法没有使用this类上下文的访问。 this指向EventEmitter上下文,所以this.text不可访问。 例2: import {EventEmitter} from "events"; export default class EventsExample2 { private emitter: EventEmitter; constructor(private text: […]

在expressjs中创build模型

我有一个快速的应用程序,从外部API获取其数据 api.com/companies (GET, POST) api.com/companies/id (GET, PUT) 我想创build一个模型,使代码更容易维护,你可以看到我在这里重复了很多代码。 router.get('/companies', function(req, res, next) { http.get({ host: 'http://api.com', path: '/companies' }, function(response) { var body = ''; response.on('data', function(d) { body += d; }); }); res.render('companies', {data: body}); }); router.get('/companies/:id', function(req, res, next) { http.get({ host: 'http://api.com', path: '/companies/' + req.params.id }, function(response) { var body = […]

设置代理服务器创build反应的应用程序

我已经使用create-react-app启动了一个反应应用程序,并运行了npm run eject脚本来访问所有文件。 我之后安装了express并创build了与package.json文件位于同一级别的server.js文件 这些是server.js文件的内容: const express = require('express'); const app = express; app.set('port', 3031); if(process.env.NODE_ENV === 'production') { app.use(express.static('build')); } app.listen(app.get('port'), () => { console.log(`Server started at: http://localhost:${app.get('port')}/`); }) 这里没有什么疯狂的,只是设置了未来的API代理,我需要使用秘密,因为我不想暴露我的API。 在此之后,我添加了一个"proxy": "http://localhost:3001/"到我的package.json文件。 我现在卡住,因为我需要弄清楚如何正确启动我的服务器,并使用此开发模式server.js文件,然后在生产。 理想情况如果我们可以使用更多的代理ie /api和/api2 ,那也是一件/api2

如果条件添加graphics魔术师命令

我有以下命令: gm('input.jpg') .crop(500, 500, 10, 10) .write('output.jpg', function (err) { if (err) { console.log(err) } else { console.log('Success') } }) 我想添加一个条件,而不必写2个不同的命令,所以它会是这样的: var overlay = true gm('input.jpg') .crop(500, 500, 10, 10) if(overlay == true){ .draw('image Over 0,0 750,750 overlay.jpg') } .write('output.jpg', function (err) { if (err) { console.log(err) } else { console.log('Success') } }) 我知道上面的代码不会运行,我正在寻找一个可以工作的build议,没有2个不同的GM命令

在Node.js中使用axios发布表单数据

我正在testingPostman上的Uber API,并且能够成功发送带有表单数据的请求。 当我尝试使用Node.js和axios库翻译这个请求时,我得到一个错误。 这是我的邮差请求的样子: 我得到的回应是: { "error": "invalid_client" } 以下是我在Node.js和axios中所做的: var axios = require("axios"); const config = { headers: { 'Content-Type': 'multipart/form-data' } }; axios.post('https://login.uber.com/oauth/v2/token', { client_id: '***', client_secret: '***', grant_type: 'authorization_code', redirect_uri: 'http://localhost:8080/', code: '***' }, config) .then(function(response) { console.log(response.data) }) .catch(function(error) { console.log(error) }) 当我这样做,我得到一个400响应。 我添加了'multipart/form-data'标题,因为我填写了邮递员请求中的表单数据。 没有头我得到相同的结果。 我期望得到我从邮差得到的相同的响应,有没有在我的configurationvariables在Node.js脚本错了吗? 任何帮助,将不胜感激!

从另一个云function调用云function

我正在使用云端函数在免费的Spark层次上调用另一个云端函数。 有没有特殊的方法来调用另一个云端function? 或者你只是使用标准的HTTP请求? 我曾尝试直接调用其他函数,如下所示: exports.purchaseTicket = functions.https.onRequest((req, res) => { fetch('https://us-central1-functions-****.cloudfunctions.net/validate') .then(response => response.json()) .then(json => res.status(201).json(json)) }) 但是我得到错误 FetchError:请求https:// us-central1-functions- ****。cloudfunctions.net/validate失败,原因:getaddrinfo ENOTFOUND us-central1-functions – *****。cloudfunctions.net us-central1-functions – ***** cloudfunctions.net:443 这听起来像firebase阻止连接,尽pipe它是一个谷歌拥有,因此它不应该被locking Spark计划只允许向Google拥有的服务发送出站networking请求。 如何使用云端函数调用另一个云端函数?

仅当另一个具有特定值时,才需要Node Js Express Validator字段

我使用express-validator来检查我的post字段。 我的问题是我想只需要其他字段具有特定的值所需的一些字段。 例如: if person_organisation is true: person_organisation_name must be required if person_organisation is false: person_first_name must be required 有没有什么办法把这个规则放在validation架构中?

用nodeJS上传文件

我在使用nodeJS和Angular上传文件时遇到了问题。 我find了解决scheme,但只有Ajax我不知道。 是否有可能没有? 用下面的代码,我得到这个错误: POST http://localhost:2000/database/sounds 413 (Payload Too Large) 码: HTML: <div class="form-group"> <label for="upload-input">This needs to be a .WAV file</label> <form enctype="multipart/form-data" action="/database/sounds" method="post"> <input type="file" class="form-control" name="uploads[]" id="upload-input" multiple="multiple"> </form> <button class="btn-primary" ng-click="uploadSound()">UPLOAD</button> </div> 使用Javascript: $scope.uploadSound = function(){ var x = document.getElementById("upload-input"); if ('files' in x) { if (x.files.length == 0) { […]

有没有一种方法来从protobuf生成GraphQL模式?

我有一个相当大/复杂的API的protobuf定义,我不知道是否有一个方便的工具来自动生成一个文本GraphQL模式和它的(嵌套)types从这个protobuf的子集? 我正常使用Node.js,但我打开其他语言来生成架构。 提前致谢!

如何在EmberJS应用程序中使用Jitsi Meet

在我的Ember应用程序中,我使用了我安装的ember-inject-script: npm install –save-dev ember-inject-script 我的页面的controller.js文件如下所示: import Ember from 'ember'; import injectScript from 'ember-inject-script'; export default Ember.Controller.extend({ init: function() { this._super(); var url = "https://meet.jit.si/external_api.js"; injectScript(url); var domain = "meet.jit.si"; var room = "JitsiMeetAPIExample"; var width = 700; var height = 700; var htmlElement = document.querySelector('#meet'); var api = new JitsiMeetExternalAPI(domain, room, width, height, htmlElement); […]