在发布这个问题时,我想出了答案,但我会在这里发布以防万一它可以帮助其他人,也许有人可以帮助解决发生的事情的原因.
当我跑:
sudo npm install -g grunt
Run Code Online (Sandbox Code Playgroud)
最后一部分说:
/usr/bin/grunt -> /usr/lib/node_modules/grunt/bin/grunt
npm ERR! peerinvalid The package flatiron does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer flatiron-cli-config@0.1.3 wants flatiron@~0.1.9
npm ERR! peerinvalid Peer flatiron-cli-users@0.1.1 wants flatiron@~0.1.9
npm ERR! System Linux 3.5.0-23-generic
npm ERR! command "nodejs" "/usr/bin/npm" "install" "-g" "grunt"
npm ERR! cwd /home/explunit
npm ERR! node -v v0.8.19
npm ERR! npm -v 1.2.9
npm ERR! code EPEERINVALID
npm ERR!
npm ERR! Additional logging details can be …
Run Code Online (Sandbox Code Playgroud) 我们在Amazon Elastic Beanstalk上运行了一个nodejs项目,该项目使用我们使用nodejitsu的私有npm注册表托管的私有模块.
但是,从弹性实例访问私有npm注册表并不简单,并且没有很好地记录.
设置此访问权限的最佳方法是什么?
我有一个应用程序,我正在部署到Nodejitsu.最近,他们遇到了npm问题导致我的应用程序在我尝试(并且失败)重启后几个小时后离线,因为无法安装其依赖项.有人告诉我,将来可以通过列出bundledDependencies
我的package.json中的所有依赖项来避免这种情况,从而导致依赖项与应用程序的其余部分一起上传.这意味着我需要我的package.json看起来像这样:
"dependencies": {
"express": "2.5.8",
"mongoose": "2.5.9",
"stylus": "0.24.0"
},
"bundledDependencies": [
"express",
"mongoose",
"stylus"
]
Run Code Online (Sandbox Code Playgroud)
现在,在DRY的基础上,这是没有吸引力的.但更糟糕的是维护:每次添加或删除依赖项时,我都必须在两个地方进行更改.是否有一个命令,我可以使用同步bundledDependencies
用dependencies
?
这个问题特别适用于Nodejitsu,但类似的效果似乎发生在其他VPS上.我有一个使用socket.io的实时游戏,我注意到的一件事是偶尔服务器会在响应之前等待过多的时间.如果在该时间范围内发送了多个请求,则它们的行为就像它们已经排队并一次处理完毕一样.我怀疑它与硬件共享上的其他用户的存在有着模糊的关联(就像任何VPS的情况一样).
无论如何,为了测试它(并确保它不是由于我的游戏代码),我构建了一个最小的测试用例:
express = require('express')
http = require('http')
app = express()
server = http.Server(app)
io = require('socket.io').listen(server)
io.sockets.on('connection', function(sock){
sock.on('perf', function(data, cb){
cb([Date.now()]); //respond with the current time
})
})
app.get('/', function(req, res){
res.header("Access-Control-Allow-Origin", "*")
res.header("Access-Control-Allow-Methods", "HEAD,GET,PUT,POST,DELETE")
res.header("Access-Control-Allow-Headers", "X-Requested-With")
res.end(JSON.stringify([Date.now().toString()])); //http equivalent of perf function
})
server.listen(process.env.PORT || 6655, function(){
console.log('listening now')
})
Run Code Online (Sandbox Code Playgroud)
我有一个简单的空白HTML页面,其中包含socket.io,它会定期发送perf
事件和时间,以便回调触发所需的时间.它仍然显示相同的事情:
请注意,条形长度表示时间量的平方根,而不是线性数量.
当我不使用socket.io时,我使用XHR对当前响应时间进行类似的测量,结果非常相似,有很多低延迟响应(尽管基线比websockets高,如预期的那样),偶尔也有一些尖峰似乎堆积如山.
奇怪的是,如果你在多个浏览器窗口和不同的浏览器中打开它,不同浏览器之间似乎存在相关性(并且它在某些服务器上完全不存在或频率显着降低),这似乎意味着它是服务器端现象.但是,某些浏览器会出现延迟峰值而其他浏览器不会出现延迟峰值,并且同一会话中的两个Chrome窗口看起来几乎完全相同,这表明它是本地发生的(每台计算机或每个浏览器,网络)明智的).
从左到右:Chrome Incognito,Chrome(常规),Firefox,Chrome(常规)
无论如何,这让我困惑了几个月,我真的很想了解是什么导致它以及如何解决它.
我正在尝试安装Forever以与Node.js一起使用.我正在使用'npm install forever -g'安装它.它似乎安装得很好,但当我运行'永远'命令时,它找不到.
也许我不是在正确的位置安装它?它应该安装在哪里?
任何帮助都会很棒!谢谢!
我正在探索使用node-http-proxy代理服务器,以便我可以让端口80上的代理服务器向端口8000上的应用服务器转发请求.但是,我有点困惑为什么这是个好主意这个设置究竟是什么能够防止安全问题.
note-http-proxy文档讨论了很多关于使用它作为向具有多个端口或IP地址的应用程序转发请求的方法.这显然非常有用,特别是对于基本的循环负载均衡器策略.但是,我们在一个端口上只有一个应用程序,因此我们无需执行此操作.
如果我们应该使用这个代理服务器有一个重要的安全原因,那么我很想知道它可以防范哪种类型的攻击.另外,我们正在使用socket.io,所以如果代理有一些东西可以帮助websocket服务器扩展,我也想了解它.我们无法确定如何运行我们的应用程序sudo
(因为1024以下的所有端口都需要root访问权限),所以如果此时没有充分的理由使用代理服务器,我们只是要废弃.如果有人知道如何在没有root访问权限的端口80上使用代理服务器运行此应用程序,那么这也非常有用.谢谢!
将流星应用程序部署到Nodejitsu试用环境但未能使其运行.jitsu deploy
从我的meteor app目录执行时,我收到以下错误:ReferenceError: Meteor is not defined
.
如果您已经在Nodejitsu上运行并运行了一个流星应用程序,请突出显示您采取的步骤以及我可能缺少的依赖项.我将使用您的建议,并尝试让我的应用程序运行.谢谢.
// package.json contents
{
"name": "test123-meteor",
"subdomain": "user123.test123-meteor",
/*
* Really not sure about this line here...
*/
"scripts": {
"start": "node client/controllers/GeneralController.js"
},
"version": "0.0.1-2",
"engines": {
"node": "0.8.x"
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个成功在本地工作的应用程序,所以我知道代码工作.但是,当我去部署到节点jitsu时,我收到一个错误,它无法找到本地模块.这是我有的:
文件设置:
/index.js
/config/config.js
Run Code Online (Sandbox Code Playgroud)
index.js
var cfg = require('./config/config.js');
Run Code Online (Sandbox Code Playgroud)
尝试部署节点jitsu时给我一个错误:
Error: Cannot find module './config/config.js'
Run Code Online (Sandbox Code Playgroud)
由于所有这些代码都在本地工作,我不相信这是一个编码问题.我的印象是本地模块不需要包含在package.json中,但也许它们可以用于节点jitsu?我阅读了他们的文档,但找不到本地模块的任何特殊内容.
谢谢!
有谁知道如何将SSL证书部署到我的nodejitsu应用程序?
我可以看到我已经启用了https,但我想购买SSL证书,因为我正在营业.
我使用以下命令创建了一个新的MongoDB:
jitsu databases create mongodb my_datbase
Run Code Online (Sandbox Code Playgroud)
现在我不确定如何管理这个新创建的数据库.当我尝试在我的应用程序中使用给定的详细信息时,我最终得到"发生错误:{"code":"ECONNRESET"}".
如何检查数据库运行正常?