我想知道这两个代码块在Node.js中是否相同?
// Style 1
setTimeout(function () {
console.log('hello');
}, 0);
// Style 2
console.log('hello');
Run Code Online (Sandbox Code Playgroud)
从上面开始我0超时,应该没有等待时间.它是否与console.log('hello');不使用setTimeout直接调用相同?
我有一个初始化的对象,我在app.js文件中初始化,我想使这个初始化对象在所有模块中都可用.我怎么能这样做?将这个对象传递给每个模块是一种方法,我想知道我是否缺少任何东西,或者应该以不同的方式完成?
我看到mongoose实际上支持默认连接,我需要在app.js中初始化一次和其他模块中的任何地方,我可以简单地使用它而不需要传递它.有没有我可以像这样做?
我还检查了node.js http://nodejs.org/api/globals.html中的全局对象文档,并想知道我应该使用global来解决问题.
谢谢
如果我使用包含要执行的脚本块的UserData块的AWS CloudFormation模板,例如:
"UserData": {
"Fn::Base64": {
"Fn::Join": [
"",
[
"#!/bin/bash\n",
"apt-get update\n",
"apt-get -y upgrade\n",
]
]
}
}
Run Code Online (Sandbox Code Playgroud)
创建实例后,
我在文档中找不到他们提到的.
谢谢
我正在寻找 JQ 查询,它允许我合并 2 个数组变量(不是文件),并带我用第二个数组中的较新值覆盖第一个数组。例如:
#!/bin/bash -e
firstArrayVariable='
[
{
"Key": "A B",
"Value": "1 2"
},
{
"Key": "C D",
"Value": "3 4"
},
{
"Key": "E F",
"Value": "5 6"
},
{
"Key": "G H",
"Value": "9 10"
}
]
'
secondArrayVariable='
[
{
"Key": "A B",
"Value": "1 2"
},
{
"Key": "C D",
"Value": "3 4"
},
{
"Key": "G H",
"Value": "11 12"
},
{
"Key": "J K",
"Value": "15 16"
}
]
'
jq …Run Code Online (Sandbox Code Playgroud) 我有一个架构并指定登录是唯一的是真的。当我使用findByIdAndUpdate,并通过查询$集更新的用户对象,但它并不能登录时是DUP扔回去错误。有谁知道为什么以及如何更新对象并强制模式验证?
谢谢!
// UserSchema.js
var schema = new Schema({
login: {
required: true,
unique: true
},
password: {
index: true,
type: String
}
});
// Update
UserSchema.findByIdAndUpdate('someID', { '$set': { login: 'abc' } }, function (error, user) {
callback(error, user);
});
Run Code Online (Sandbox Code Playgroud) 我使用以下函数可以获取PublicDnsName:
{
"Fn::GetAtt": [
"EC2Instance",
"PublicDnsName"
]
}
Run Code Online (Sandbox Code Playgroud)
但是,在我将静态ip分配给实例后,上面的函数SOMETIMES返回新的PublicDnsName,有时它返回旧的 PublicDnsName(在我们分配静态IP之前的dns名称).
你以前见过这个问题吗?我正在试图找出原因.请让我知道似乎是什么问题或我应该如何解决它.谢谢.
以下是我的部分CloudFormation模板:
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Graphite and StatsD",
"Parameters": {
"InstanceType": {
"Type": "String",
"Default": "m1.xlarge"
}
},
"Mappings": {
"RegionMap": {
"us-east-1": {
"AMI": "ami-5ffaa636",
"RecordSetName": "ue1"
},
"us-west-1": {
"AMI": "ami-4ad8ef0f",
"RecordSetName": "uw1"
},
"us-west-2": {
"AMI": "ami-66049d56",
"RecordSetName": "uw2"
},
"eu-west-1": {
"AMI": "ami-861bfbf1",
"RecordSetName": "ew1"
},
"ap-southeast-1": {
"AMI": "ami-42134610",
"RecordSetName": "as1"
},
"ap-southeast-2": {
"AMI": "ami-c98b17f3",
"RecordSetName": "as2"
}, …Run Code Online (Sandbox Code Playgroud) 我使用打包器来构建Amazon AMI,我遇到了以下问题:
ami-a4bdd194)没有ec2-ami-tools安装,所以我写了一个小脚本来使用settings属性安装它./usr/local/bin但我在构建AMI时仍然遇到以下错误.任何帮助将非常感谢!谢谢!
//控制台错误日志
amazon-instance: /usr/local/bin/ec2-bundle-vol: line 3: EC2_HOME: Neither of EC2_AMITOOL_HOME or EC2_HOME environment variables are set
amazon-instance:
amazon-instance:
amazon-instance:
amazon-instance:
amazon-instance:
==> amazon-instance: Volume bundling failed. Please see the output above for more
==> amazon-instance: details on what went wrong.
Run Code Online (Sandbox Code Playgroud)
// packer.json
{
"variables": {
"access_key": "",
"secret_key": "",
"x509_cert_path": "",
"x509_key_path": ""
},
"builders": [
{
"access_key": "{{user `access_key`}}",
"secret_key": "{{user `secret_key`}}",
"x509_cert_path": "{{user `x509_cert_path`}}",
"x509_key_path": "{{user `x509_key_path`}}",
"account_id": …Run Code Online (Sandbox Code Playgroud) 我正在使用AWS EC2 14.04 LTS,并且尝试运行command
apt-get -y upgrade或apt-get -y dist-upgrade,但是,我总是收到如下提示:
我尝试了以下命令,但没有一个起作用,但仍然出现以上提示:
apt-get update && apt-get -y -o Dpkg::Options::="--force-confmiss" -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" dist-upgrade
apt-get update && apt-get -o Dpkg::Options::='--force-confold' --force-yes -fuy dist-upgrade
我一直在寻找解决方案,但找不到实际可行的方法。有人有什么想法吗?
谢谢
我使用以下群集代码为我的节点应用程序分叉多个进程.
if (cluster.isMaster) {
require('os').cpus().forEach(function () {
cluster.fork();
});
cluster.on('exit', function (worker, code, signal) {
cluster.fork();
});
} else if (cluster.isWorker) {
logger.log.info('Worker server started on port %d (ID: %d, PID: %d)', app.get('port'), cluster.worker.id, cluster.worker.process.pid);
}
Run Code Online (Sandbox Code Playgroud)
输出是:
Thu Sep 05 2013 20:30:03 GMT-0700 (PDT) - info: Worker server started on port 3000 (ID: 1, PID: 606)
Thu Sep 05 2013 20:30:03 GMT-0700 (PDT) - info: Worker server started on port 3000 (ID: 2, PID: 607)
Thu Sep 05 2013 20:30:03 …Run Code Online (Sandbox Code Playgroud) 第一个问题:
在Node.js集群中,我知道如果集群工作程序崩溃或被杀死,它将使用新实例再次自动启动.但是,如果主进程被杀,如果它被杀死或崩溃,我们如何使主进程自动启动呢?我试图杀死主进程,整个群集也被杀死了.反正有没有阻止这个?
if (cluster.isMaster) {
require('os').cpus().forEach(function () {
cluster.fork();
});
cluster.on('exit', function (worker, code, signal) {
cluster.fork();
});
} else if (cluster.isWorker) {
...
}
Run Code Online (Sandbox Code Playgroud)
第二个问题:
我想我们可以从process.pid中找到主进程.但是如果没有来自Node.js的这些信息并查看pgrep -l节点的输出,我该如何确定哪个是主进程ID?无论如何我可以在fork()时标记或命名进程,这样我就可以在pgrep命令中找到主进程了吗?
$ pgrep -l node
1420 node
1419 node
1418 node
1417 node
1416 node
1415 node
1414 node
1413 node
1412 node
Run Code Online (Sandbox Code Playgroud)
更新
在我应用了下面提到的@fardjad的process.title后,它运行得很漂亮.这是pgrep的结果:
$ pgrep -fl acl
1994 acl_api_worker_8 USER=nam
1993 acl_api_worker_7 USER=nam
1992 acl_api_worker_6 USER=nam
1991 acl_api_worker_5 USER=nam
1990 acl_api_worker_4 USER=nam
1989 acl_api_worker_3 USER=nam
1988 acl_api_worker_2 USER=nam
1987 …Run Code Online (Sandbox Code Playgroud) 我花了很多时间来弄清楚为什么我的 CloudFormation 模板使用 WaitCondition 失败。模板错误输出:WaitCondition timed out. Received 0 conditions when expecting 1. 请注意,我确实确保我的 AMI 在我的 AMI 中预装了 cfn-signal 命令。
我附上了我的模板的以下屏幕截图:

我用谷歌搜索,发现有些人有同样的问题,比如:http : //virtuallyhyper.com/2013/02/cloudformation-waitcondition-timed-out-error/。但是,就我而言, cfn-signal 命令确实存在。所以直到现在我仍然不知道如何解决这个问题。
谢谢