Npm.require找不到节点模块

时间:2013-11-29 00:41:55

标签: javascript node.js meteor

我一直在尝试使用Npm.require获取ldapjs模块并将其用于客户端身份验证,但是我收到以下消息。

 var ldap = Npm.require('ldapjs');

 Error: Cannot find module 'ldapjs'

require是不是应该从npm下载软件包?

4 个答案:

答案 0 :(得分:2)

目前在Meteor中使用NPM包的最佳方法是this npm smart package。有关如何使用它的说明非常清楚。基本上,你做了三件事:

1)安装npm:

mrt add npm

2)创建包含所需包列表的packages.json文件:

{
    "ldapjs": "0.6.3"
}

3)通过 Meteor.require:

使用该软件包
var ldapjs = Meteor.require('ldapjs');

答案 1 :(得分:1)

不,不是。只要在智能包中使用Npm.depends({...})指令声明节点模块, Meteor 将仅下载节点模块。如果您的代码不是某个智能包的一部分,那么您需要手动安装节点模块。

答案 2 :(得分:1)

在Meteor包中使用npm模块需要两件事:

  1. Npm.depends - 使用版本指定要使用的模块。 Meteor的构建系统将下载该软件包并管理其依赖项
  2. Npm.require - 拉入一个模块,使其在当前范围内可用
  3. 请注意,您需要编写一个包以使用npm模块。您可能想要阅读Meteor文档on packages

    例如,请查看Meteor中的logging包。它的package.js指定了对npm模块cli-color的依赖性,其logging.js文件需要并使用该模块。

答案 3 :(得分:0)

主应用程序中的节点模块

如果您想使用主应用程序中的 npm ,该怎么办?如果您不想手动安装节点模块(维护问题)该怎么办?

这可以通过解决方法实现。创建一个shim智能包以提供主应用程序的节点模块。将模块导出到主应用程序。

具体步骤

1. 在Meteor应用程序之外创建目录npm-shim。我们将在第3步中使用它。


2。将这两个文件添加到其中:

档案package.js

// npm dependencies are only available for packages. If you have npm 
// dependencies for the main application, you need this workaround:
// Create a shim package to provide the npm dependencies to the main app.

Package.describe({
    summary: "Meteor main application npm dependencies"
});

Npm.depends({
    colors: '0.6.2', 
    // Add more modules as needed.
});

Package.on_use(function(api) {
    api.export("NpmShim"); // Omit this for versions before 0.6.5
    api.add_files("npm.js", "server");
});

档案npm.js

NpmShim = {};
NpmShim.colors = Npm.require('colors');
// Add more modules as needed.


3. 编辑smart.json并添加以下行:

"npm-shim": { "path": <path to the directory created in step 1> },


4。执行mrt update然后meteor add npm-shim

此解决方法的结果

可以从Meteor主应用程序中使用节点模块,而无需手动安装它们。使用NpmShim.colors代替Npm.require('colors')

如果您需要更多模块,则必须将其添加到package.jsnpm.js(请参阅评论// Add more modules as needed)。