我好像无法调试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
没有帮助.
我正在尝试构建一个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) 假设我有一个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) 我正在努力学习如何使用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) 我正在运行节点检查器并尝试在控制台中运行命令.
但是,我无法运行它们.点击输入而不是跑步,转到新线.
在chrome中使用任何其他控制台都可以正常工作,而不是Inspector.
尝试重新启动节点和检查器.任何想法如何解决这一问题?
console google-chrome node.js google-chrome-devtools node-inspector
我试图允许从任何地方访问。
我尝试使用应用中间件:
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)
我无法区分代码之间的区别,但是只有一套有效。有什么想法吗?这似乎是一个不应该太复杂的问题。谢谢
我一直在使用 Elements 页面来编辑 html。一切都运转良好;右键单击会显示完整的上下文菜单,然后我可以编辑 html。
现在,当我右键单击时,我只能看到“服务”(OS X 项目)。
这只发生在我正在编辑的网站上。如果我在任何其他网站上做同样的事情,我就可以编辑 html。
任何想法为什么会这样或如何解决它?
编辑-它开始工作了。我所做的就是在页面之间切换并不断关闭和打开开发工具。不知道是什么真正解决了它。
我试图采取一个数组并将其分成长度为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) 我在代码中遇到一个错误,使我困惑了很长一段时间,并且正在寻求澄清。
在这段代码中,注释掉的内部承诺导致了问题。结束时,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) 我想弄清楚这两者之间的权衡.
似乎使用一个具有多个视图的设计文档很快就会更新,因为在编制索引时,每个文档都会在一次传递中传递到每个视图中.
但是,如果我在设计文档中更改视图,则需要进行权衡,所有视图都需要更新.
这看起来是否正确?还有什么人可以增加这种理解吗?
有一个帐户文档.这个文件有大约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数组的问题吗?
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 ×5
es6-promise ×4
promise ×4
node.js ×3
couchdb ×2
arrays ×1
asynchronous ×1
chaining ×1
console ×1
cors ×1
ecmascript-6 ×1
express ×1
mocha.js ×1
reactjs ×1