是否有任何人为Rails项目配置nack我碰巧尝试了虚拟代码
var http = require('http');
var nack = require('nack');
var app = nack.createProcess("/home/viren/myapp/config.ru");
http.createServer(function (req, res) { app.proxy(req, res); }).listen(8124, "127.0.0.1");
但它报告了我以下错误
events.js:94
抛出新的错误('addListener只接受Function的实例');
^错误:addListener只接受Function
的实例在BufferedRequest。 (events.js:94:11)
在过程中(/home/viren/node_modules/nack/lib/process.js:257:21)
在Process.proxy(/home/viren/node_modules/nack/lib/process.js:3:63)
在服务器上。 (/home/viren/simple.proxy.js:7:7)
在Server.emit(events.js:67:17)
在HTTPParser.onIncoming(http.js:1124:12)
在HTTPParser.onHeadersComplete(http.js:108:31)
在Socket.ondata(http.js:1019:22)
at Socket._onReadable(net.js:683:27)
在IOWatcher.onReadable [作为回调](net.js:177:10)
这是我的自定义机架文件
require "config/environment"
use Rails::Rack::LogTailer
use ActionDispatch::Static
run ActionController::Dispatcher.new
答案 0 :(得分:0)
根据node_modules / nack / lib / process.js的来源:257 nack期望app.proxy有一个app.proxy(req,res,next)的签名,这是一个常见的连接应用程序的习惯用法。在connect中,调用next(“some value”)是一种约定,因为大多数应用程序在中间件链的底部都有一个catch all错误处理程序。由于您没有使用connect,只需创建自己的错误处理程序。
我还创建了一个拉取请求,因此希望将来使用next是可选的。 https://github.com/josh/nack/pull/25
var http = require('http'); var nack = require('nack');
var app = nack.createProcess("/home/viren/myapp/config.ru");
http.createServer(function (req, res) { app.proxy(req, res, logNackError); }).listen(8124, "127.0.0.1");
function logNackError(err) {
console.log('nack error:', err);
}