小编Ell*_*iot的帖子

使用mocha运行节点检查器

我好像无法调试mocha脚本.

我可以用这样的检查器运行节点node --inspect script.js.然后这给了我一个去调试的网址,比如说chrome-devtools://devtools/remote/...

但是,当我使用mocha与此行时,mocha --inspect test.js我无法调试.它说'调试器监听[::]:5858'.有没有办法让我使用节点检查器调试mocha测试?

转到localhost:5858给了我这个信息:

Type: connect
V8-Version: 5.1.281.84
Protocol-Version: 1
Embedding-Host: node v6.9.1
Content-Length: 0
Run Code Online (Sandbox Code Playgroud)

使用--inspect --debug-brk没有帮助.

mocha.js node.js node-inspector

17
推荐指数
1
解决办法
7412
查看次数

React样式组件淡入/淡出

我正在尝试构建一个React组件来处理淡入和淡出.在下面的代码中,如果我out作为prop 传递给组件,它会在动画制作之前被隐藏为隐藏.我试图让它在默认情况下淡入,然后在我传入out道具时淡出.有人看到这个问题的解决方案吗?

import React from 'react';
import styled, { keyframes } from 'styled-components';

const fadeIn = keyframes`
  from {
    transform: scale(.25);
    opacity: 0;
  }

  to {
    transform: scale(1);
    opacity: 1;
  }
`;

const fadeOut = keyframes`
  from {
    transform: scale(1);
    opacity: 0;
  }

  to {
    transform: scale(.25);
    opacity: 1;
  }
`;

const Fade = styled.div`
  ${props => props.out ?
    `display: none;`
   : `display: inline-block;`
   }
  animation: ${props => props.out ? fadeOut : fadeIn} 1s linear infinite; …
Run Code Online (Sandbox Code Playgroud)

reactjs styled-components

12
推荐指数
1
解决办法
9307
查看次数

ES6 Promise.all()错误句柄 - 是否需要.settle()?

假设我有一个Promise.all()处理两个承诺.如果一个承诺产生错误,但另一个承诺解决,我希望能够在Promise.all()结算后根据情况处理错误.

ES6承诺缺少结算方法,我假设有充分的理由.但我不禁想到这个.settle()方法会让我这个问题变得容易多了.

我是以错误的方式解决这个问题,还是通过一种解决方法扩展ES6 Promise,这是正确的做法?

我正在考虑如何使用的一个例子.settle():

Promise.all([Action1,Action2])
.settle(function(arrayOfSettledValues) 
    //if 1 failed but not 2, handle
    //if 2 failed but not 1, handle
    //etc....
)
Run Code Online (Sandbox Code Playgroud)

javascript promise ecmascript-6 es6-promise

9
推荐指数
1
解决办法
4389
查看次数

JS ES6 Promise Chaining

我正在努力学习如何使用promises,但我很难理解链接.我假设使用此代码,两个承诺都将运行.然后,当我调用test.then()时,它应该知道测试已经解决并将解析数据传递给then().

一旦该函数完成,它将进入下一个then(),用test2 promise重复相同的过程.

但是,我只能打印出第一个承诺结果,而不是第二个.这里缺少什么想法?

var test = new Promise(function(resolve, reject){
    resolve('done1');
});

var test2 = new Promise(function(resolve, reject){
    resolve('done2');
});

test
.then(function(data) {
    console.log(data);
})
.then(test2)
.then(function(data) {
    console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

javascript chaining promise es6-promise

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

节点检查器控制台 - 无法执行命令,而是转到换行符

我正在运行节点检查器并尝试在控制台中运行命令.

但是,我无法运行它们.点击输入而不是跑步,转到新线.

在chrome中使用任何其他控制台都可以正常工作,而不是Inspector.

尝试重新启动节点和检查器.任何想法如何解决这一问题?

console google-chrome node.js google-chrome-devtools node-inspector

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

CORS表示无法正常工作

我试图允许从任何地方访问。

我尝试使用应用中间件:

app.use(function (req, res, next) {
  res.setHeader("Access-Control-Allow-Origin", "*");
  res.setHeader('Access-Control-Allow-Methods', '*');
  res.setHeader("Access-Control-Allow-Headers", "*");
  next();
});
Run Code Online (Sandbox Code Playgroud)

我已尝试在路线中使用它:

app.post('/login',function(req,res){
var login   = req.body;
var sess    = req.session;

if (!login.email && !login.pwd){    
    return res.status(401);
}
res.header("Access-Control-Allow-Origin", '*');
res.header("Access-Control-Allow-Headers", '*');
.... more code here
Run Code Online (Sandbox Code Playgroud)

两者都不起作用。我不断收到错误消息:“对预检请求的响应未通过访问控制检查:所请求的资源上没有'Access-Control-Allow-Origin'标头。”

在服务器的更下方,我们对另一条路由使用了类似的代码,该代码有效:

app.post('/questar',function(req,res){
//allow xhr post from retireup domains
var cors = {
    origin= "https://www.website.com";
};
res.header("Access-Control-Allow-Origin", cors.origin);
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.type('application/json');
Run Code Online (Sandbox Code Playgroud)

我无法区分代码之间的区别,但是只有一套有效。有什么想法吗?这似乎是一个不应该太复杂的问题。谢谢

node.js cors express

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

Chrome 开发工具 - 元素面板 - 上下文菜单停止工作

我一直在使用 Elements 页面来编辑 html。一切都运转良好;右键单击会显示完整的上下文菜单,然后我可以编辑 html。

现在,当我右键单击时,我只能看到“服务”(OS X 项目)。

这只发生在我正在编辑的网站上。如果我在任何其他网站上做同样的事情,我就可以编辑 html。

任何想法为什么会这样或如何解决它?

编辑-它开始工作了。我所做的就是在页面之间切换并不断关闭和打开开发工具。不知道是什么真正解决了它。

google-chrome google-chrome-devtools

3
推荐指数
1
解决办法
736
查看次数

将数组部分映射到新数组

我试图采取一个数组并将其分成长度为4的部分,然后将这些部分推入一个新的数组.我写了一个小脚本来解决它,但我很好奇其他人如何解决这个问题.有没有比我正在做的更好的方式?

var test = ['test0', 'test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test7' ];

var splitTest = test.map(function(value, index) {
    if (index % 4 === 0) {
          return ([test[index], test[index + 1], test[index + 2], test[index+3]]);
    }
}).filter(function(value) {
    return typeof value != 'undefined';
});
Run Code Online (Sandbox Code Playgroud)

这是我的代码的jsbin:https://jsbin.com/zubavivoto/edit?js,console

输入

["test0", "test1", "test2", "test3", "test4", "test5", "test6", "test7"]
Run Code Online (Sandbox Code Playgroud)

产量

[["test0", "test1", "test2", "test3"], ["test4", "test5", "test6", "test7"]]
Run Code Online (Sandbox Code Playgroud)

javascript arrays functional-programming

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

了解.then()ES6

我在代码中遇到一个错误,使我困惑了很长一段时间,并且正在寻求澄清。

在这段代码中,注释掉的内部承诺导致了问题。结束时,Promise.all()会在setTimeout命中后立即继续,而不是在超时内解决之后。

用promise包装异步代码可以解决流程问题,但是为什么呢?

本质上,为什么我们不能只在.then()链中运行普通的异步代码,而在异步回调的末尾返回Promise.resolve()呢?

var asyncPromise = function() {
    return new Promise(function(resolve, reject) {
        setTimeout(function() {
            console.log('Async Promise done');
            resolve();
        }, 1000);
    });
};

var generateSignupPromises = function(qty) {
    var promiseArray = [];
    for (var i = 1; i <= qty; i++) {
        promiseArray.push(
            function() {
                return asyncPromise()
                .then(function() {
                    console.log('Before Timeout');

                  //Uncommenting this fixes the issue
                  //return new Promise(function(resolve, reject) {
                        setTimeout(function() {
                            console.log('After Timeout');
                            //resolve();
                            return Promise.resolve();
                        }, 500);
                  //})
                });
            }
        );
    }
    return promiseArray;
};

var …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous promise es6-promise

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

CouchDb - 一个具有多个视图的设计文档与多个具有拆分视图的设计文档

我想弄清楚这两者之间的权衡.

似乎使用一个具有多个视图的设计文档很快就会更新,因为在编制索引时,每个文档都会在一次传递中传递到每个视图中.

但是,如果我在设计文档中更改视图,则需要进行权衡,所有视图都需要更新.

这看起来是否正确?还有什么人可以增加这种理解吗?

couchdb

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

Couchdb超慢视图,100%cpu使用率

有一个帐户文档.这个文件有大约1k个席位.对于每个座位,我们会发出一份文件.当然,你会觉得这很慢.map函数运行如下:

function(doc) {
    if (doc.type == 'account') {
        doc.seats.map(function(seat) {
            emit(seat.userID, doc))
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

但是删除doc.seats,然后发出更小的文档似乎没有帮助.

function(doc) {
    if (doc.type == 'account') {
        doc.seats.map(function(seat) {
            delete doc.seats
            emit(seat.userID, doc))
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么删除座位不会加速这个?我们可以加快速度的唯一方法是不发出doc对象,只发出一个id.

function(doc) {
    if (doc.type == 'account') {
        doc.seats.map(function(seat) {
            emit(seat.userID, doc.id))
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

这是在沙发视图中循环遍历doc数组的问题吗?

couchdb

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

承诺链不按顺序执行

Account.findByOwnerID(userID)
.then(function(account) {
    return validateTo(account, userID);
})
.then(User.findByUsername(email))
Run Code Online (Sandbox Code Playgroud)

在这种情况下,findByOwnerID会运行,但只要它内部的Promise.all()开始运行,findByUsername就会开始执行,跳过validateTo.

代码中的一个简单更改使我可以按预期工作.

Account.findByOwnerID(userID)
.then(function(account) {
    return validateTo(account, userID);
})
.then(function() {
    return User.findByUsername(email);
})
Run Code Online (Sandbox Code Playgroud)

使用此代码,findByOwnerID运行,然后当它解析时,validateTo运行.解析后,运行findByUsername.

那为什么这个工作而不是上面那个?我理解承诺链接的方式是每个.then()预期会得到一个承诺,当解决时,将触发下一个.then().

关于所用函数的一些背景知识(如果需要,我可以提供更多详细信息)

Account.findByOwnerID和User.findByUsername是返回promise的函数.在该承诺内部,他们使用Promise.all.then(function(){resolve()}来返回主要承诺并继续链.

validateTo是一个返回promise的函数.

javascript promise es6-promise

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