mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
Do not cache modules that throw exceptions
If a module throws an exception on load, it should not be cached. This patch shows the problem in a test case and also fixes it. See: https://groups.google.com/forum/#!topic/nodejs-dev/1cIrvJcADbY Closes GH-707 Closes GH-710
This commit is contained in:
committed by
Ryan Dahl
parent
a2f498a5ef
commit
66601f13d9
@@ -270,7 +270,13 @@ Module._load = function(request, parent, isMain) {
|
||||
}
|
||||
|
||||
Module._cache[filename] = module;
|
||||
module.load(filename);
|
||||
try {
|
||||
module.load(filename);
|
||||
} catch (err) {
|
||||
delete Module._cache[filename];
|
||||
throw err;
|
||||
}
|
||||
|
||||
return module.exports;
|
||||
};
|
||||
|
||||
|
||||
12
test/simple/test-require-exceptions.js
Normal file
12
test/simple/test-require-exceptions.js
Normal file
@@ -0,0 +1,12 @@
|
||||
var common = require('../common');
|
||||
var assert = require('assert');
|
||||
|
||||
// A module with an error in it should throw
|
||||
assert.throws(function() {
|
||||
require(common.fixturesDir + '/throws_error');
|
||||
});
|
||||
|
||||
// Requiring the same module again should throw as well
|
||||
assert.throws(function() {
|
||||
require(common.fixturesDir + '/throws_error');
|
||||
});
|
||||
Reference in New Issue
Block a user