[英]Node module with Helper file results in 'cannot find module' error when installed
預先道歉,我敢肯定在一個顯而易見的線程中有一個簡單的答案,我只是未能找到/理解它。
給定在全局node_modules/Jimmy/index.js
文件中實現的Jimmy
的node.js模塊; 我有一些“幫助程序”功能,我將它們放在單獨的Helper.js
文件中,它們都位於同一目錄中。 當我運行一個示例程序require
在同一目錄中運行該示例程序時,效果很好,但是在其他任何地方運行該示例程序時,都無法加載支持的Helper.js文件:
Error: Cannot find module 'Helper'
有人可以向我解釋或指出為什么不起作用以及如何使它起作用的解釋嗎?
編輯:啞巴下來只是演示問題。 包括Swagger-client依賴關系,以防萬一。
節點模塊在~/Jimmy
目錄中稱為~/Jimmy
。
在~/Jimmy/index.js
定義的模塊類:
var Swagger = require('swagger-client');
var Helper = require('Helper');
function Jimmy (host, username, password) {
this._host = host;
this._hdr = {
'Authorization': 'Basic ' + new Buffer(username+':'+password).toString('base64') ,
'Content-Type': 'application/json'
};
}
Jimmy.prototype.getEntity = function(entity) {
return Helper.get(this._host, this._hdr, entity);
}
module.exports =
{
Jimmy: Jimmy
};
在~/Jimmy/Helper.js
定義的模塊幫助器函數:
var Swagger = require('swagger-client');
function get(host, hdr, entity) {
var url = 'http://'+host+'/config/' + entity;
var request = {
url : url,
headers: hdr
};
return Swagger.http(request)
.then( (res) => { return res.body; });
}
module.exports =
{
get : get
};
並在~/test.js
示例測試:
var jimmy = require('Jimmy');
var j = new jimmy.Jimmy('192.168.56.151:8080', 'admin', 'admin');
j.getEntity('joey')
.then( (e) => {
console.log(JSON.stringify(e, null, 2));
})
.catch( (err) => { console.log('ERR: ' + err); });
對不起,發現我的錯誤; 萬一其他人做到了,對於模塊中的本地文件,我通過相對路徑名引用來使其起作用。
因此,在我的情況下,從模塊的index.js
我只想要本地版本的Helper.js
:
var Helper = require('./Helper'); // works
而不是:
var Helper = require('Helper'); // 'not found' error
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.