找不到 app.config.js 的问题
Hi,在部署 node.js 应用时发现,如果不在 node.js 项目文件夹里面启动,而是在外层文件夹启动 node.js 应用,将会找不到 app.config.js 文件。
错误日志:[AppConfig] No avaliable app.config.js found in /opt/tars/apps/100004256
具体原因是因为, app.config.js 的查询方式为
var appConfig={};
var lastConfigDir='';
var dirname=path.resolve(".");
while (dirname!==lastConfigDir){
try {
var config=path.resolve(dirname,'./app.config.js');
appConfig=require(config);
if (!appConfigHidden){
console.log('[AppConfig] Load config from '+config);
}
break;
}catch (e){
if (!appConfigHidden){
console.log('[AppConfig] No avaliable app.config.js found in '+dirname);
}
lastConfigDir=dirname;
dirname=path.dirname(lastConfigDir);
}
}
其中,var dirname=path.resolve("."); 默认以 process.cwd() node.js 的启动目录为基准,一层层往外找父目录。
如果改成 var dirname= __dirname;,将以 appConfig.js 文件所在的目录往上找,通常该文件在 node_modules文件夹 里,所以应该会在 node.js 项目的文件夹内,此时不管 process.cwd() 指向哪个目录,都不会影响 app.config.js 的查找方式。
请发个pull request,谢谢!
发自我的 iPhone
在 2016年12月20日,11:12,工业聚 [email protected] 写道:
Hi,在部署 node.js 应用时发现,如果不在 node.js 项目文件夹里面启动,而是在外层文件夹启动 node.js 应用,将会找不到 app.config.js 文件。
错误日志:[AppConfig] No avaliable app.config.js found in /opt/tars/apps/100004256
具体原因是因为, app.config.js 的查询方式为
var appConfig={}; var lastConfigDir=''; var dirname=path.resolve("."); while (dirname!==lastConfigDir){ try { var config=path.resolve(dirname,'./app.config.js'); appConfig=require(config); if (!appConfigHidden){ console.log('[AppConfig] Load config from '+config); } break; }catch (e){ if (!appConfigHidden){ console.log('[AppConfig] No avaliable app.config.js found in '+dirname); } lastConfigDir=dirname; dirname=path.dirname(lastConfigDir); } } 其中,var dirname=path.resolve("."); 默认以 process.cwd() node.js 的启动目录为基准,一层层往外找父目录。
如果改成 var dirname= __dirname;,将以 appConfig.js 文件所在的目录往上找,通常该文件在 node_modules 里,所以应该会在 node.js 项目的文件夹内,此时不管 process.cwd() 指向哪个目录,都不会影响 app.config.js 的查找方式。
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.