Npm.require可以'找不到节点模块
Npm.require can't find node module
我一直在尝试使用Npm.require
来获取ldapjs
模块并将其用于客户端身份验证,但我收到了以下消息。
var ldap = Npm.require('ldapjs');
Error: Cannot find module 'ldapjs'
require
不是应该从npm下载包吗?
目前在Meteor中使用NPM包的最佳方式是这个NPM智能包。关于如何使用它的说明在那里非常清楚。基本上,你要做三件事:
1) 安装npm:
mrt add npm
2) 创建包含所需包列表的packages.json
文件:
{
"ldapjs": "0.6.3"
}
3) 通过Meteor.require:使用程序包
var ldapjs = Meteor.require('ldapjs');
不,不是Meteor只会下载一个节点模块,只要它在智能包中声明,带有Npm.depends({...})
指令。如果您的代码不是某个智能软件包的一部分,则需要手动安装节点模块。
在Meteor包中使用npm模块需要两件事:
- Npm.depends-指定要使用的模块和版本。Meteor的构建系统将下载包并管理其依赖关系
- Npm.require-拉入模块,使其在当前范围内可用
请注意,您需要编写一个包来使用npm模块。你可能想通读Meteor的包装文档。
例如,查看Meteor中的日志记录包。它的package.js指定了对npm模块cli color的依赖,它的logging.js文件需要并使用该模块。
节点模块
如果您想从主应用程序中使用npm,该怎么办?如果您不想手动安装节点模块(这是一个维护难题),该怎么办?
这可以通过变通方法实现。创建一个填充程序智能包,为主应用程序提供节点模块。将模块导出到主应用程序。
确切的步骤
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
)。
- module.js在运行iron节点时找不到模块
- 节点.js:找不到模块“柴”
- Javascript错误:replaceChild-找不到节点
- javascript错误-找不到节点:replaceChild
- Npm.require可以'找不到节点模块
- 节点可以'找不到父node_modules文件夹中存在的模块
- 节点.js /socket.io/socket.io.js 找不到
- Heroku + 节点:找不到模块错误
- 在节点.js中找不到模块“连接”
- 找不到模块“快递” |socket.io [节点.js]
- 节点.js socket.io.js找不到或未定义 io
- 节点 js 找不到响应体 HTTP 创建服务器
- 找不到强大的模块 - 节点.js
- 安装后找不到节点专用模块
- socket.io 的节点服务器找不到本地主机
- Dojo确认对话框'缺少:在属性id'之后;和'找不到节点'
- 节点错误:“;找不到模块'路由'&”;
- 为什么茉莉花节点没有'找不到我的规范文件
- 找不到模块'internal/fs'升级到节点7后
- 我可以确定查询是否在指定范围内找不到任何具有值的子节点