Merge branch 'pr/3526' into devel

Fixes #3505. Fixes #3526.
This commit is contained in:
David Glasser
2015-01-23 16:50:12 -08:00
3 changed files with 21 additions and 9 deletions

View File

@@ -1,3 +1,7 @@
## vNEXT
* Support `Npm.require('foo/bar')`. #3505 #3526
## v.1.0.3.1, 2015-Jan-20
* Rewrite `meteor show` and `meteor search` to show package information for

View File

@@ -1319,17 +1319,20 @@ _.extend(JsImage.prototype, {
var nodeModuleDir =
files.pathJoin(item.nodeModulesDirectory.sourcePath, name);
if (files.exists(nodeModuleDir)) {
var nodeModuleTopDir =
files.pathJoin(item.nodeModulesDirectory.sourcePath,
name.split("/")[0]);
if (files.exists(nodeModuleTopDir)) {
return require(nodeModuleDir);
}
try {
return require(name);
} catch (e) {
throw new Error("Can't load npm module '" + name +
"' while loading " + item.targetPath +
". Check your Npm.depends().'");
buildmessage.error(
"Can't load npm module '" + name + "' from " +
item.targetPath + ". Check your Npm.depends().");
return undefined;
}
}
},

View File

@@ -129,12 +129,17 @@ Fiber(function () {
return require(name);
}
var nodeModuleDir =
path.resolve(serverDir, fileInfo.node_modules, name);
var nodeModuleBase = path.resolve(serverDir, fileInfo.node_modules);
if (fs.existsSync(nodeModuleDir)) {
var nodeModuleDir = path.resolve(nodeModuleBase, name);
// If the user does `Npm.require('foo/bar')`, then we should resolve to
// the package's node modules if `foo` was one of the modules we
// installed. (`foo/bar` might be implemented as `foo/bar.js` so we
// can't just naively see if all of nodeModuleDir exists.
if (fs.existsSync(path.resolve(nodeModuleBase, name.split("/")[0]))) {
return require(nodeModuleDir);
}
}
try {
return require(name);
} catch (e) {