Skip to content

Commit

Permalink
fs: add a temporary fix for re-evaluation support
Browse files Browse the repository at this point in the history
This is needed to give users a grace period before actually breaking
modules that re-evaluate fs sources from context where internal modules
are not allowed, e.g. older version of graceful-fs module.

To be reverted in Node.js 7.0

Fixes: #5097, see also #1898, #2026, and #4525.
PR-URL: #5102
Reviewed-By: Rod Vagg <[email protected]>
Reviewed-By: Jeremiah Senkpiel <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Ben Noordhuis <[email protected]>
  • Loading branch information
ChALkeR authored and jasnell committed Feb 13, 2016
1 parent 00638ac commit 1d79787
Showing 1 changed file with 36 additions and 1 deletion.
37 changes: 36 additions & 1 deletion lib/fs.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,42 @@ const isWindows = process.platform === 'win32';

const DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);
const errnoException = util._errnoException;
const printDeprecation = require('internal/util').printDeprecationMessage;

var printDeprecation;
try {
printDeprecation = require('internal/util').printDeprecationMessage;
} catch (e) {
if (e.code !== 'MODULE_NOT_FOUND') throw e;

// TODO(ChALkeR): remove this in master after 6.x
// This code was based upon internal/util and is required to give users
// a grace period before actually breaking modules that re-evaluate fs
// sources from context where internal modules are not allowed, e.g.
// older versions of graceful-fs module.

const prefix = `(${process.release.name}:${process.pid}) `;

printDeprecation = function(msg, warned) {
if (process.noDeprecation)
return true;

if (warned)
return warned;

if (process.throwDeprecation)
throw new Error(`${prefix}${msg}`);
else if (process.traceDeprecation)
console.trace(msg);
else
console.error(`${prefix}${msg}`);

return true;
};
printDeprecation('fs: re-evaluating native module sources is not ' +
'supported. If you are using the graceful-fs module, ' +
'please update it to a more recent version.',
false);
}

function throwOptionsError(options) {
throw new TypeError('Expected options to be either an object or a string, ' +
Expand Down

0 comments on commit 1d79787

Please sign in to comment.