cat.js icon indicating copy to clipboard operation
cat.js copied to clipboard

找不到 app.config.js 的问题

Open Lucifier129 opened this issue 9 years ago • 1 comments

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 的查找方式。

Lucifier129 avatar Dec 20 '16 03:12 Lucifier129

请发个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.

qmwu2000 avatar Dec 20 '16 23:12 qmwu2000