Fixes https://github.com/marko-js/async-writer/issues/3 - flush is deprecated in OutgoingMessage

This commit is contained in:
Patrick Steele-Idem 2016-02-26 16:03:19 -07:00
parent b355f1f217
commit 4ce14241e8

View File

@ -31,6 +31,26 @@ if (process.env.hasOwnProperty('MARKO_HOT_RELOAD')) {
// enable browser-refresh
require('../browser-refresh').enable();
function fixFlush() {
try {
var OutgoingMessage = require('http').OutgoingMessage;
if (OutgoingMessage.prototype.flush && OutgoingMessage.prototype.flush.toString().indexOf('deprecated') !== -1) {
// Yes, we are monkey-patching http. This method should never have been added and it was introduced on
// the iojs fork. It was quickly deprecated and I'm 99% sure no one is actually using it.
// See:
// - https://github.com/marko-js/async-writer/issues/3
// - https://github.com/nodejs/node/issues/2920
//
// This method causes problems since marko looks for the flush method and calls it found.
// The `res.flush()` method is introduced by the [compression](https://www.npmjs.com/package/compression)
// middleware, but, otherwise, it should typically not exist.
delete require('http').OutgoingMessage.prototype.flush;
}
} catch(e) {}
}
fixFlush();
function loadSource(templatePath, compiledSrc) {
var templateModulePath = templatePath + '.js';