生产就绪的Express.js服务器项目教程
production-ready-expressjs-serverExpress.js server that implements production-ready error handling and logging following latest best practices.项目地址:https://gitcode.com/gh_mirrors/pr/production-ready-expressjs-server
1. 项目的目录结构及介绍
production-ready-expressjs-server/
├── bin/
├── config/
├── nginx/
├── prisma/
├── src/
├── tests/
├── .dockerignore
├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .graphqlconfig
├── .snyk
├── .travis.yml
├── Dockerfile
├── Dockerfile.dev
├── LICENSE
├── README.md
├── debug.yml
├── docker-compose.yml
├── package-lock.json
├── package.json
├── prettier.config.js
├── test-env.yml
目录介绍
bin/: 包含启动脚本。config/: 包含项目的配置文件。nginx/: 包含Nginx配置文件。prisma/: 包含Prisma ORM的配置和模式定义。src/: 包含主要的应用程序源代码。tests/: 包含测试文件。.dockerignore: Docker构建时忽略的文件。.editorconfig: 编辑器配置文件。.eslintignore: ESLint忽略的文件。.eslintrc.js: ESLint配置文件。.gitignore: Git忽略的文件。.graphqlconfig: GraphQL配置文件。.snyk: Snyk安全扫描配置文件。.travis.yml: Travis CI配置文件。Dockerfile: Docker生产环境构建文件。Dockerfile.dev: Docker开发环境构建文件。LICENSE: 项目许可证。README.md: 项目说明文档。debug.yml: 调试配置文件。docker-compose.yml: Docker Compose配置文件。package-lock.json: npm锁定文件。package.json: npm包配置文件。prettier.config.js: Prettier代码格式化配置文件。test-env.yml: 测试环境配置文件。
2. 项目的启动文件介绍
项目的启动文件位于bin/
目录下,通常包含启动脚本,例如www
文件。这个文件负责启动Express.js服务器。
// bin/www
const app = require('../src/app');
const http = require('http');
const port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
const server = http.createServer(app);
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
function normalizePort(val) {
const port = parseInt(val, 10);
if (isNaN(port)) {
return val;
}
if (port >= 0) {
return port;
}
return false;
}
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
const bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
function onListening() {
const addr = server.address();
const bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
console.log('Listening on ' + bind);
}
3. 项目的配置文件介绍
项目的配置文件主要位于config/
目录下,包含各种环境下的配置信息。
配置文件示例
// config/default.js
module.exports = {
server: {
port: process.env.PORT || 3000,
},
database: {
url: process.env.MONGO_DB || 'mongodb://localhost:27017/test',
production-ready-expressjs-serverExpress.js server that implements production-ready error handling and logging following latest best practices.项目地址:https://gitcode.com/gh_mirrors/pr/production-ready-expressjs-server