我有几个模块 - 比如说server.js,module1.js,...,moduleN.js.
我想在server.js中定义日志文件:
winston.add(winston.transports.File, { filename: 'mylogfile.log' });
Run Code Online (Sandbox Code Playgroud)
然后在我的所有模块中使用它.
最好的方法是什么?我可以exports.winston=winston;
在每个模块中然后在server.js中设置它,但有没有更好的解决方案?
先感谢您!
我的bottom_index.ejs看起来像这样:
<div>The bottom section</div>
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我声明了ejs:
ejs = require('ejs');
Run Code Online (Sandbox Code Playgroud)
然后编译函数:
var botom_index_ejs =
ejs.compile(fs.readFileSync(__dirname + "/../views/bottom_index.ejs", 'utf8'));
Run Code Online (Sandbox Code Playgroud)
然后调用它来渲染html:
botom_index_ejs()
Run Code Online (Sandbox Code Playgroud)
它工作正常!
现在我想将模板更改为:
<div><%= bottom_text %></div>
Run Code Online (Sandbox Code Playgroud)
并能够将参数(bottom_text)传递给bottom_index.ejs
我应该如何传递参数?
谢谢!
我有兴趣监视javascript错误并使用callstack记录错误.
我不想将所有东西都包装在try-catch块中.
根据这篇文章,http://blog.errorception.com/2011/12/call-stacks-in-ie.html 可以在window.onerror内部" 递归调用.caller来查找堆栈中的每个函数,以了解之前的函数堆栈 "
我试图获得callstack:
window.onerror = function(errorMsg, url, lineNumber)
{
var stk = [], clr = arguments.callee.caller;
while(clr)
{
stk.push("" + clr);
clr = clr.caller;
}
// Logging stk
send_callstack_to_log(stk);
}
Run Code Online (Sandbox Code Playgroud)
但即使callstack更长,也只有一步是可能的:
(function()
{
function inside() {it.will.be.exception;};
function middle() {inside()};
function outside() {middle()}
outside();
})();
Run Code Online (Sandbox Code Playgroud)
一步并不有趣,因为onerror参数给了我更多关于它的信息.
是的,我根据上面提到的文章用IE尝试过.
备注:我还尝试在"ERRORCAEPTION"上开设一个帐户来收集错误日志.我用IE测试它并且"ERRORCAEPTION"认识到错误来自IE,但我在日志中找不到任何callstack信息.
我有一个网页,由 Android 应用程序通过 Webview 组件显示。
它决定更改字体大小,因此 16px 的文本具有 font-size=14px(当我使用 weinre 检查元素时我可以看到它。它有 16px,但在计算样式中它有 14px)。
我不希望 Webview 决定什么更好。那么我该如何解决这个问题呢?
备注:在这种特定情况下,更改会导致文本不垂直对齐,因为更改后行高不会调整字体大小。这只是其中一种情况,我想阻止 Webview 更改 css 值。
我有一个href和下载属性的链接:
<a id="lnk" href="data:text/csv;charset=utf-8,1%2C2%2C3" download="my_file.csv">click to download</a>
Run Code Online (Sandbox Code Playgroud)
当我点击它(例如在Chrome中)时,会按照假设下载csv文件"my_file.csv".
现在我希望能够以编程方式引发此操作.所以使用JQuery我试图做:
$('#lnk').click();
Run Code Online (Sandbox Code Playgroud)
要么
$('#lnk').trigger("click");
Run Code Online (Sandbox Code Playgroud)
但是没有下载该文件.
这是代码:http: //jsbin.com/yereg/3/edit
我可以从链接复制链接地址,然后只使用window.open:
window.open('data:text/csv;charset=utf-8,1%2C2%2C3');
Run Code Online (Sandbox Code Playgroud)
但这样我就无法设置文件名(链接按download="my_file.csv"
属性).如果有办法设置文件名,这个解决方案很好.
备注:在我的情况下,应支持Chrome和Firefox.我不关心其他浏览器.
我有一个使用'selenium-webdriver'运行浏览器的代码.它运行在Ubuntu上.
我必须覆盖userAgent,因此看起来来自浏览器的请求来自Windows(即User-Agent请求标题的值).
这是我的NodeJS代码:
var firefox = require('selenium-webdriver/firefox');
var profile = new firefox.Profile();
profile.setPreference('general.useragent.override', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36');
var options = new firefox.Options().setProfile(profile);
console.log(profile);
var driver = new firefox.Driver(options);
driver.get('http://whatsmyuseragent.com/');
Run Code Online (Sandbox Code Playgroud)
出现的userAgent是
Mozilla/5.0(X11; Ubuntu; Linux x86_64; rv:49.0)Gecko/20100101 Firefox/49.0
这是console.log(profile); 输出(如你所见 - 'general.useragent.override':'Mozilla/5.0(Windows NT 10.0; WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/53.0.2785.143 Safari/537.36'出现在那里,但没有t影响浏览器设置):
Profile {
preferences_:
{ 'browser.dom.window.dump.enabled': true,
'browser.laterrun.enabled': false,
'browser.newtab.url': 'about:blank',
'browser.newtabpage.enabled': false,
'browser.startup.page': 0,
'browser.startup.homepage': 'about:blank',
'browser.startup.homepage_override.mstone': 'ignore',
'browser.usedOnWindows10.introURL': 'about:blank',
'dom.max_chrome_script_run_time': 30,
'dom.max_script_run_time': 30,
'dom.report_all_js_exceptions': …
Run Code Online (Sandbox Code Playgroud) 我必须将这个 Python 代码翻译为 NodeJS:
from passlib.hash import pbkdf2_sha256
pbkdf2_sha256.verify('12345678', '$pbkdf2-sha256$2000$8R7jHOOcs7YWImRM6V1LqQ$CIdNv8YlLlCZfeFJihZs7eQxBsauvVfV05v07Ca2Yzg')
>> True
Run Code Online (Sandbox Code Playgroud)
上面的代码是完整的代码,即没有其他参数/设置(只需pip install passlib
在运行它来安装passlib
包之前运行)。
我正在寻找validatePassword
Node 中函数的正确实现,它将通过这个积极的实现测试:
validatePassword('12345678', '$pbkdf2-sha256$2000$8R7jHOOcs7YWImRM6V1LqQ$CIdNv8YlLlCZfeFJihZs7eQxBsauvVfV05v07Ca2Yzg')
>> true
Run Code Online (Sandbox Code Playgroud)
这是passlib.hash.pbkdf2_sha256 及其默认参数值的文档。
我尝试使用上面的 Python 代码中的数据来遵循此处的答案,但该解决方案没有通过测试。
我希望获得有关此实现的一些帮助(最好使用内置 NodeJScrypto
包)。
先感谢您。
我必须使用Adword的API从Adwords中检索数据。
我成功检索了具有所有必要属性等的帐户,广告系列,广告组,广告和关键字。
我在检索站点链接时遇到问题。
我尝试对一个活动进行此操作,该活动是一个具有100个附加链接的有效活动(已选择6个)。
根据本文档,我使用CampaignAdExtensionService并选择CampaignAdExtensionService字段。这是我在ruby中的代码(假设campaign_id为12345678):
campaign_srv = @api.service(:CampaignAdExtensionService, get_api_version())
campaign_id = 12345678 # for example
selector = {
:fields => ['CampaignId', 'DestinationUrl', 'DisplayText'],
:predicates => {:field => "CampaignId", :operator => "IN", :values => Array(campaign_id)},
:paging => {:start_index => 0, :number_results => 5000}
}
page = campaign_srv.get(selector)
Run Code Online (Sandbox Code Playgroud)
运行此代码,我得到一个不包含任何附加链接的哈希对象:
page.to_json =“ {” total_num_entries“:1,” page_type“:” CampaignAdExtensionPage“,” entries“:[{” campaign_id“:12345678,” ad_extension“:{” id“:76543210,” ad_extension_type“:” LocationSyncExtension“ ,“ email”:“邮件* @ domain * .com”,“ icon_media_id”:1000,“ should_sync_url”:false,“ xsi_type”:“ LocationSyncExtension”},“ stats”:{“ network”:“ ALL”,“ stats_type“:” CampaignAdExtensionStats“}}]}”
如何检索广告系列的所有附加链接?
我必须以编程方式测试 Windows 上 Chrome 中某些页面的内存使用情况。
这是我的 Chrome 版本(60.0.3112.113 - 官方版本 - 64 位)
按照Chromium 命令行开关文档,我使用--enable-precise-memory-info
以下标志运行 Chrome:
然后在打开的 Chrome 实例中我尝试检查值window.performance.memory.usedJSHeapSize
但看起来尽管有--enable-precise-memory-info
标志,但此信息仍然被存储在桶中。
即使在 Chrome 任务管理器 (Shift + Esc) 中,我也发现每次执行以下命令后,内存使用量都会增加约 1 Mb:
for(let i=0;i<100000;i++) {a.push('sdftgkljhghertyukytedtreut56ytirty7uikty' +i)}
Run Code Online (Sandbox Code Playgroud)
我只发现了一个关于这个问题的过时的讨论,即使这个问题存在,我也希望在网上找到更多的讨论。
如果我做错了什么——我的错误是什么?
如果不再支持此标志,那么新的正确方法是什么?
谢谢你!
我有一个要使用ruby eval评估的清理字符串.该字符串可以包含任何简单的算术公式,如'44/5'.
问题是结果eval('44/5')
将是8(而不是8.8).
它作为评估的一部分发生(因为1.0*eval('44/5')
给出8.0).
我没有为eval找到任何额外的参数来管理它.
我甚至尝试将字符串前置或包装以将其转换为:
'0.0+44/5'
Run Code Online (Sandbox Code Playgroud)
要么
'1.0*(44/5)'
Run Code Online (Sandbox Code Playgroud)
但它仍然没有给我8.8.
eval('44.0/5')
给了我想要的结果,但我不想在字符串中插入任何东西(我准备好在必要时包装它).
不知道怎样才能解决问题?
使用jquery 版本1.8我可以通过以下方式选中和取消选中复选框$el.attr('checked', logic_value)
:
http://jsbin.com/oyIQuJo/1/edit
使用jquery 版本1.10.1(或2.0.2),它只更改一次以检查然后取消选中,我无法再次设置它:
http://jsbin.com/oyIQuJo/2/edit
http://jsbin.com/oyIQuJo/3/edit
这是一个已知的行为/错误?最好的方法是什么,这样我可以多次检查/取消选中它?
我可以做$el[0].checked = logic_value
(http://jsbin.com/oyIQuJo/4/edit),但我真的不喜欢这个解决方案,因为如果它有多个元素,我应该遍历选择器的所有元素.