2017-05-01 26 views
0

事先道歉,我確信在一個明顯的線程中有一個簡單的答案,我只是沒有找到它/理解它。有Helper文件的節點模塊在安裝時會導致'找不到模塊'錯誤

鑑於在全局node_modules/Jimmy/index.js文件中實現的node.js模塊Jimmy;我有一些'幫助'功能,我把它們放在一個單獨的Helper.js文件中,全部放在同一個目錄中。偉大的作品,當我運行一個示例程序require從同一目錄荷蘭國際集團,但運行,從其他地方相同的樣本程序,它無法加載支持Helper.js文件:

Error: Cannot find module 'Helper' 

有人可以解釋或指向我以解釋爲什麼這不起作用,我應該怎麼做才能使它工作?

編輯:笨到只演示問題。包括Swagger-客戶端依賴關係以防萬一。

Node Module在目錄~/Jimmy中被稱爲Jimmy。在~/Jimmy/index.js定義

模塊類:在~/Jimmy/Helper.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 
}; 

模塊的輔助功能:

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); }); 
+0

能否請您發佈您的代碼,所以我們可以看到

在我的情況下從我模塊的index.js我只是想的Helper.js本地版本,我想

所以你試過了什麼? – webbm

回答

1

對不起,發現自己搞錯了。如果有其他人這樣做,對於模塊中的本地文件,我通過相對路徑名來引用它。

var Helper = require('./Helper'); // works 

而不是:

var Helper = require('Helper'); // 'not found' error 
相關問題