如何在 Netlify 中部署 Node JS 项目

问题描述 投票:0回答:1

目前,我在使用“netlify-cli”的“手动”方式将我的 Node js 应用程序部署到 Netlify 时遇到一些麻烦。

我的项目文件夹如下所示: enter image description here

我的所有主要代码都在“index.js”中,如下所示:

const express = require('express');
const cors = require('cors');


const app = express();

app.use(express.json());
app.use(cors());

app.get('/test', (req, res) => {
  res.send('Connected to backend server!')
})

const route = require('./routes');
app.use('/income', route.incomeAPI);
app.use('/expense', route.expanseAPI);

app.listen(3000, () => console.log('Successfully connected to server!'));

我的所有 API 路由都包含在“route”文件夹中。

我遵循了很多教程和网站,但仍然无法部署。

谢谢和问候, 艾曼·伊尔凡

node.js express netlify
1个回答
0
投票

当您在 Netlify 上将 Express 应用程序部署为无服务器功能时,您必须将

express
应用程序包装到
serverless-http
模块中。

让我们看看

  1. 安装以下依赖项

    npm i express serverless-http
    
  2. 在您的基本文件夹中创建

    app.js

     // YOUR_BASE/app.js
     const express = require('express');
     const cors = require('cors');
     const routes = require('./routes');
    
    
     const app = express();
     const router = express.Router();
    
     app.use(express.json());
     app.use(cors());
    
     router.get('/test', (req, res) => {
         res.send('Connected to backend server!');
     });
    
     router.use('/income', routes.incomeAPI);
     router.use('/expense', routes.expanseAPI);
    
     app.use('/api',router)
    
     module.exports = app;
    
  3. 在基本文件夹中创建另一个名为

    app.local.js
    的文件用于本地开发,因为我们无法在本地使用无服务器模块,因此我们在单独的模块中拥有
    app
    并重用它们。

     // YOUR_BASE/app.local.js
     const app = require('./app');
    
     app.listen(3000, () => console.log('Successfully connected to server!'));
    

    您可以使用此文件进行开发

  4. 您必须将

    function
    文件夹放入
    netlify
    文件夹中,这样路径就是
    YOUR_BASE/netlify/function/api.js

    最后在函数文件夹中创建新的

    api.js
    并添加这个

     const serverless = require('serverless-http');
     const app = require('../../app.js');
    
     module.exports.handler = serverless(app);
    
  5. 在您的

    netlify.toml
    文件中添加以下配置。

     [functions];
     external_node_modules = ['express'];
     node_bundler = 'esbuild'[[redirects]];
     force = true;
     from = '/api/*';
     status = 200;
     to = '/.netlify/functions/api/:splat';
    
  6. 最后手动部署

    netlify deploy
    

奖金

  1. 快速部署文档
  2. 手动部署文档

如果您仍然遇到问题,请尝试将

CommonJS
转换为
ES Module
,使用
ESM

将是一个很好的做法
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.