Node.js:Example:Startup
종속성 없는 기본 프로젝트 생성시 참고할 Node.js Startup code.
app.js
#!/usr/bin/env node
var fs = require('fs');
// Default User's properties.
var config_path = __dirname + '/config.json';
var config = {
'host': '0.0.0.0',
'port': 8080,
'root': __dirname + '/build',
'log': {
'type': 'console', // 'console', 'file'
'dir': __dirname + '/log' // Used for 'file' type.
}
};
if (fs.existsSync(config_path)) {
config = JSON.parse(fs.readFileSync(config_path, 'utf8'));
console.log('Read config: ' + config_path);
} else {
console.log('Not found config: ' + config_path);
webhook_home = process.env['WEBHOOK_HOME'];
if (fs.existsSync(webhook_home)) {
console.log('Read WEBHOOK_HOME env: ' + webhook_home);
config['root'] = webhook_home;
}
}
var source_dir = config['root'];
if (fs.existsSync(source_dir)) {
console.log('Exists: ' + source_dir);
} else {
fs.mkdirSync(source_dir);
console.log('Create: ' + source_dir);
}
var log = {
type: config['log']['type'].toLowerCase(),
dir: config['log']['dir']
};
// Redirect log.
if (log.type == 'file') {
if (fs.existsSync(log.dir) == false){
fs.mkdirSync(log.dir);
}
console.log('Enable file logger: ' + log.dir);
// var console_stdout_write = process.stdout.write;
// var console_stderr_write = process.stderr.write;
// intercept.
process.stdout.write = (str, encoding, fg) => {
fs.appendFile(log.dir + '/log.log', str, (err) => {});
}
process.stderr.write = (str, encoding, fg) => {
fs.appendFile(log.dir + '/err.log', str, (err) => {});
}
} else {
console.log('Enable console logger.');
}
var sys = require('url');
var http = require('http');
// ...