Javascript 带有辅助文件的节点模块导致';找不到模块';安装时出错
提前道歉,我确信在一条明显的线索中有一个简单的答案,我只是没能找到它/理解它 给定在全局Javascript 带有辅助文件的节点模块导致';找不到模块';安装时出错,javascript,node.js,npm,Javascript,Node.js,Npm,提前道歉,我确信在一条明显的线索中有一个简单的答案,我只是没能找到它/理解它 给定在全局node_modules/Jimmy/index.js文件中实现的node.js模块Jimmy;我将一些“helper”函数放在一个单独的helper.js文件中,都在同一个目录中。当我从同一个目录运行示例程序require时效果很好,但从其他任何地方运行该示例程序时,它无法加载支持的Helper.js文件: Error: Cannot find module 'Helper' 有人能给我解释一下为
node_modules/Jimmy/index.js
文件中实现的node.js模块Jimmy
;我将一些“helper”函数放在一个单独的helper.js
文件中,都在同一个目录中。当我从同一个目录运行示例程序require
时效果很好,但从其他任何地方运行该示例程序时,它无法加载支持的Helper.js文件:
Error: Cannot find module 'Helper'
有人能给我解释一下为什么这不起作用,以及我应该怎么做才能让它起作用吗
编辑:将其简化为演示问题。包括招摇过市的客户端依赖性,以防万一
节点模块在目录~/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
};
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
};
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); });
~/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
};
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); });
以及~/test.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
};
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
你能发布你的代码让我们看看你试过什么吗?