Tag: javascript

TypeError:无法匹配'undefined'或'null'

码 client.createPet(pet, (err, {name, breed, age}) => { if (err) { return t.error(err, 'no error') } t.equal(pet, {name, breed, age}, 'should be equivalent') }) 错误 client.createPet(pet, (err, {name, breed, age}) => { ^ TypeError: Cannot match against 'undefined' or 'null'. 为什么我得到这个错误? 我对ES6的了解让我推测,只有当数组或对象被解构或其子 undefined或为null才会出现此错误。 我不知道函数参数是用来匹配的。 如果他们是那么为什么如果我试图解构他们其中之一只是一个错误? (这不是undefined或null )。

Promise.all()。然后()解决?

使用节点4.x. 当你有一个Promise.all(promises).then()什么是解决数据的正确方法,并传递给下一个.then() ? 我想要做这样的事情: Promise.all(promises).then(function(data){ // Do something with the data here }).then(function(data){ // Do more stuff here }); 但是我不知道如何获取数据到第二个.then() 。 我不能在第一个.then()使用resolve(…) .then() 。 我想我可以做到这一点: return Promise.all(promises).then(function(data){ // Do something with the data here return data; }).then(function(data){ // Do more stuff here }); 但是,这似乎不是正确的方法来做到这一点…什么是正确的方法呢?

在node.js中获取调用函数的名字和行

怎样才能得到一个叫做当前函数的函数的名字和行? 我想有一个这样的基本的debuggingfunction(用npmlog定义log.debug ): function debug() { var callee, line; /* MAGIC */ log.debug(callee + ":" + line, arguments) } 当从另一个函数调用它会是这样的: function hello() { debug("world!") } // outputs something like: // "hello:2 'world!'" 为了清楚起见,我想要的基本上类似于Python中的这个 : import inspect def caller(): return inspect.stack()[2][3] // line no from getframeinfo().lineno 有一个节点相当于完成这个?

什么是最简单/最清洁的方式迭代数组(或objs)asynchronous?

那我怎么做: function processArray(array, index, callback) { processItem(array[index], function(){ if(++index === array.length) { callback(); return; } processArray(array, index, callback); }); }; function processItem(item, callback) { // do some ajax (browser) or request (node) stuff here // when done callback(); } var arr = ["url1", "url2", "url3"]; processArray(arr, 0, function(){ console.log("done"); }); 这有什么好处吗? 如何避免这些意大利面代码?

Node.JS等待发出HTTP请求的REST Service的callback

我使用express模块​​在Node.JS中创build一个Restful API。 在我的服务中,我正在向外部端点(服务器端)发出额外的http请求,并且需要将这些http请求中的数据返回给我的Web服务请求主体。 我已经确认,如果我在Web服务正在执行的所有操作上使用console.log ,我正在获取所需的数据。 但是,当我尝试将这些值返回给服务时,他们将返回空值。 我知道这是因为asynchronous和callback不等待http请求完成。 有没有办法做到这一点?

在node.js中,为什么会有一个util.isArray和一个Array.isArray?

我刚刚注意到Node.js v0.10.26的API文档提供了util.isArray , util.isArray(object)#如果给定的“对象”是一个数组,则返回true。 否则为假。 var util = require('util'); util.isArray([]) // true util.isArray(new Array) // true util.isArray({}) // false 但是,那个不同的ecmascripts是如何正常的, Array.isArray ? > Array.isArray([]); true > Array.isArray(new Array); true > Array.isArray({}); false

监听单个快速应用程序的HTTP和HTTPS

我可以使用相同的路由和相同的中间件创build一个同时监听HTTP和HTTPS的Express服务器吗? 目前我在HTTP上使用Express来执行此操作,将HTTPS通道隧道传送到Express,但我更喜欢纯节点解决scheme。 我可以用这个代码做,但是使用标记为私有的handle方法: var express = require( 'express' ) , https = require("https") , fs = require( 'fs' ); var app = express.createServer(); // init routes and middlewares app.listen( 80 ); var privateKey = fs.readFileSync( 'privatekey.pem' ).toString(); var certificate = fs.readFileSync( 'certificate.pem' ).toString(); var options = {key: privateKey, cert: certificate}; https.createServer( options, function(req,res) { app.handle( […]

如何检查一个variables是否被定义(或)

我正在研究node.js中的一个程序,它实际上是js。 我有一个variables: var query = azure.TableQuery… 看起来这行代码不执行一些时间。 我的问题是: 我怎样才能做到这样的条件: if this variable is defined do this. else do this. 我不能在js (query!= null) 我想看看这个variables是否定义做一些事情。 这个怎么做

除.spec.js之外的每个.js文件的节点glob模式

我正在寻找一个更好的glob模式usemin,我想find所有的.js文件,但排除.spec.js文件。 到目前为止,我有以下解决scheme。 <script src="components/**/*(.js|!(*.spec.js|*.scss))"></script> 我现在的解决scheme要求我不断添加文件扩展名来排除它们,否则会被拿起来,例如.html文件。 我试图让它只能find.js文件,并从他们排除.spec.js ,但似乎并没有工作。 另外添加!components/**/*.spec.js作为下面的另一个脚本似乎不工作。

Chrome中的量angular器错误消息“不支持的命令行标志”?

我是Protractor的新用户,我遇到了使用Chrome运行我的testing的错误 ( 错误显示在已启动浏览器的地址栏下面 ): 您正在使用不受支持的命令行标志–ignore-certificate-errors。 稳定性和安全性将受损。 这是我的量angular器conf.js: exports.config = { seleniumAddress: 'http://localhost:4444/wd/hub', capabilities: { 'browserName': 'chrome' }, … 另外,我正在使用最新的可用Chromedriver和Selenium独立服务器(2.41.0)的Mac。 现在,我没有在任何地方设置这个标志,我不记得它总是显示,所以我不知道是什么造成了这个问题。 任何想法如何解决这个问题?