我一直在尝试使用Npm.require
获取ldapjs
模块并将其用于客户端身份验证,但是我收到以下消息。
var ldap = Npm.require('ldapjs');
Error: Cannot find module 'ldapjs'
require
是不是应该从npm下载软件包?
答案 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模块需要两件事:
请注意,您需要编写一个包以使用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.js
和npm.js
(请参阅评论// Add more modules as needed
)。