Skip to content

Commit 5cbc6b5

Browse files
author
Matt Hernandez
committed
Merge pull request #87 from onmodulus/bug/unexpected-eoi
Corrects an error with invalid package.json
2 parents 34c37f2 + 435044d commit 5cbc6b5

File tree

1 file changed

+23
-19
lines changed

1 file changed

+23
-19
lines changed

lib/demeteorizer.js

+23-19
Original file line numberDiff line numberDiff line change
@@ -217,48 +217,52 @@ Demeteorizer.prototype.bundle = function (context, callback) {
217217

218218
Demeteorizer.prototype.findDependenciesInFolder = function (folder, inNodeModulesFolder, context) {
219219

220-
var files = fs.readdirSync(folder);
221-
var self = this;
222-
223-
files.forEach(function (file) {
220+
fs.readdirSync(folder).forEach(function (file) {
224221
var stats = fs.statSync(path.join(folder, file));
225222
if (stats.isDirectory()) {
226223
var inNodeMod = false;
227224
var keepGoing = true;
225+
228226
if (file === 'node_modules') {
229227
inNodeMod = true;
230228
if (inNodeModulesFolder) {
231229
keepGoing = false;
232230
}
233231
}
234232

235-
// sockjs comes with example folders, remove.
233+
// Skip the examples directory.
236234
if (file === 'examples') {
237235
keepGoing = false;
238236
}
239237

240238
if (keepGoing) {
241-
self.findDependenciesInFolder(path.join(folder, file), inNodeMod, context);
239+
this.findDependenciesInFolder(path.join(folder, file), inNodeMod, context);
242240
}
243241
}
244242
else {
245243
if (file === 'package.json') {
246-
var packageJson = JSON.parse(fs.readFileSync(path.join(folder, file)));
247-
var filtered = self.filterDep(packageJson.name, packageJson._resolved || packageJson.version);
248-
if (filtered) {
249-
context.dependencies[filtered.name] = filtered.version;
250-
}
251-
if (packageJson.dependencies) {
252-
Object.keys(packageJson.dependencies).forEach(function (dep) {
253-
var filtered = self.filterDep(dep, packageJson.dependencies[dep]);
254-
if (filtered) {
255-
context.dependencies[filtered.name] = filtered.version;
256-
}
257-
});
244+
var packageData = fs.readFileSync(path.join(folder, file));
245+
246+
// Test that the package.json contains data. There is a module that
247+
// includes a package.json fixture that is empty.
248+
if (packageData.length > 0) {
249+
var packageJson = JSON.parse(packageData);
250+
var filtered = this.filterDep(packageJson.name, packageJson._resolved || packageJson.version);
251+
if (filtered) {
252+
context.dependencies[filtered.name] = filtered.version;
253+
}
254+
if (packageJson.dependencies) {
255+
Object.keys(packageJson.dependencies).forEach(function (dep) {
256+
var filtered = this.filterDep(dep, packageJson.dependencies[dep]);
257+
if (filtered) {
258+
context.dependencies[filtered.name] = filtered.version;
259+
}
260+
}.bind(this));
261+
}
258262
}
259263
}
260264
}
261-
});
265+
}.bind(this));
262266

263267
};
264268

0 commit comments

Comments
 (0)