小编dkn*_*aus的帖子

NodeJS和NPM:建议将模块检入git后出现问题

我正在遵循'官方'建议检查所有外部依赖关系到git(文章http://www.mikealrogers.com/posts/nodemodules-in-git.html链接到常见问题解答)时遇到问题

  1. 您如何确保不仅登记了顶级依赖项?大多数npm模块目前不遵循该建议.它们都在.gitignore中有node_modules.只是删除他们的.gitignore似乎有风险.

  2. 对于已编译的模块,本文建议仅签入源并运行'npm rebuild'和部署时间.不幸的是'npm rebuild'并没有为所有模块做'干净的制作'(尽管我正在使用的npm版本1.0.106中包含了错误修复https://github.com/isaacs/npm/issues/1872).这意味着我必须阻止编译目标(否则我将在生产机器上为开发人员机器编译目标代码,而不会被npm rebuild覆盖).但是:我该怎么做?不幸的是模块没有公共的编译输出目录,所以只需git-ignoring"node_modules// build"和"/ node_modules //out /"(如本文中提到的eng.yammer.com/blog/2012/) 1/4/managing-nodejs-dependencies-and-deployments-at-yammer.html在每种情况下都无济于事.

简短版本:如何确保生产服务器使用与开发期间使用的所有相关模块完全相同的版本?

node.js npm

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

与Superagent保持联系

我正在运行一个node.js服务器A,它使用superagent向另一台服务器B发出HTTP请求.

我调查了服务器B上的请求,看到了标题connection正在close和httpVersion 1.1:

var http = require('http');
var request = require('superagent');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.write('req.httpVersion seen on server:' + req.httpVersion);
  res.write('\nreq.headers.connection seen on server:' + req.headers.connection);
  res.end();
}).listen(1337, '0.0.0.0');

request
  .get('localhost:1337/helloword')
  .end(function (err, res) {
    console.log(res.text);
  });
Run Code Online (Sandbox Code Playgroud)

这导致:

req.httpVersion seen on server:1.1
req.headers.connection seen on server:close
Run Code Online (Sandbox Code Playgroud)

但是,如果我从浏览器访问同一台服务器,我得到:

req.httpVersion seen on server:1.1
req.headers.connection seen on server:keep-alive
Run Code Online (Sandbox Code Playgroud)

http://tools.ietf.org/html/rfc2616#page-172我了解到这keep-alive是HTTP 1.1的默认值,除非另有声明Connection: close.

所以,我的问题是:

  • 为什么Superagent/Node.js显式设置请求不使用keep-alive/persistent连接?
  • 如何强制Superagent/Node.js使用保持连接?
  • 如何进一步影响确切的行为(保持打开的连接数,超时数等)?

http keep-alive node.js superagent

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

标签 统计

node.js ×2

http ×1

keep-alive ×1

npm ×1

superagent ×1