簡體   English   中英

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模塊需要兩件事:

  1. Npm.depends-指定要使用的模塊以及版本。 流星的構建系統將下載軟件包並管理其依賴項
  2. 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.jsnpm.js (請參閱注釋// Add more modules as needed )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM