生产就绪的Express.js服务器项目教程

生产就绪的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

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...