diff --git a/lib/module.js b/lib/module.js index 08e8ba15574..a5963545b8d 100644 --- a/lib/module.js +++ b/lib/module.js @@ -103,11 +103,18 @@ function readPackage(requestPath) { try { var jsonPath = path.resolve(requestPath, 'package.json'); var json = fs.readFileSync(jsonPath, 'utf8'); - var pkg = packageCache[requestPath] = JSON.parse(json); - return pkg; - } catch (e) {} + } catch (e) { + return false; + } - return false; + try { + var pkg = packageCache[requestPath] = JSON.parse(json); + } catch (e) { + e.path = jsonPath; + e.message = 'Error parsing ' + jsonPath + ': ' + e.message; + throw e; + } + return pkg; } function tryPackage(requestPath, exts) { @@ -123,7 +130,7 @@ function tryPackage(requestPath, exts) { // In order to minimize unnecessary lstat() calls, // this cache is a list of known-real paths. // Set to an empty object to reset. -Module._realpathCache = {} +Module._realpathCache = {}; // check if the file exists and is not a directory function tryFile(requestPath) { @@ -209,7 +216,7 @@ Module._nodeModulePaths = function(from) { var paths = []; var parts = from.split(splitRe); - for (var tip = parts.length - 1; tip >= 0; tip --) { + for (var tip = parts.length - 1; tip >= 0; tip--) { // don't search in .../node_modules/node_modules if (parts[tip] === 'node_modules') continue; var dir = parts.slice(0, tip + 1).concat('node_modules').join(joiner); @@ -217,7 +224,7 @@ Module._nodeModulePaths = function(from) { } return paths; -} +}; Module._resolveLookupPaths = function(request, parent) { @@ -367,7 +374,7 @@ Module.prototype._compile = function(content, filename) { Object.defineProperty(require, 'paths', { get: function() { throw new Error('require.paths is removed. Use ' + - 'node_modules folders, or the NODE_PATH '+ + 'node_modules folders, or the NODE_PATH ' + 'environment variable instead.'); }}); @@ -445,7 +452,7 @@ Module._extensions['.js'] = function(module, filename) { // Native extension for .json -Module._extensions['.json'] = function (module, filename) { +Module._extensions['.json'] = function(module, filename) { var content = NativeModule.require('fs').readFileSync(filename, 'utf8'); module.exports = JSON.parse(stripBOM(content)); };