You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Netlify部署后MongoDB Atlas图片上传失败及页面报错问题求助

Netlify部署后MongoDB Atlas图片上传失败及页面报错问题求助

各位大佬好,我最近做了一个简单的图片上传小项目,本地跑起来完全没问题,但部署到Netlify后就出了一堆问题,实在头大,来这儿求助大家!

问题详情

  • 本地测试:启动localhost服务器后,选择图片点击上传,能成功把文件存到MongoDB Atlas的GridFS里,接口返回也正常,一切都顺风顺水
  • 部署到Netlify后:点击上传按钮后,图片根本没传到数据库里,而且上传操作完成后刷新页面,还会直接弹出“页面找不到”的错误,完全搞不懂哪里出问题了

我的代码

后端Node.js代码

const express = require('express');
const mongoose = require('mongoose');
const multer = require('multer');
const GridFsStorage = require('multer-gridfs-storage').GridFsStorage;
const Grid = require('gridfs-stream');

const app = express();

const mongoURI = 'mongodb+srv://tabish69122681:(Hide my password for privacy)@mycluster.94px1em.mongodb.net/?retryWrites=true&w=majority';
const conn = mongoose.createConnection(mongoURI, {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

let gfs;
conn.once('open', () => {
  gfs = Grid(conn.db, mongoose.mongo);
  gfs.collection('uploads');
});

const storage = new GridFsStorage({
  url: mongoURI,
  file: (req, file) => {
    return new Promise((resolve, reject) => {
      const fileInfo = {
        filename: file.originalname,
        bucketName: 'uploads'
      };
      resolve(fileInfo);
    });
  }
});

const upload = multer({ storage });

app.get('/', (req, res) => {
  res.sendFile(__dirname + '/index.html');
});

app.post('/upload', upload.single('file'), (req, res) => {
  res.status(201).json({ message: 'File uploaded successfully' });
});

app.get('/files', (req, res) => {
  gfs.files.find().toArray((err, files) => {
    if (!files || files.length === 0) {
      return res.status(404).json({
        err: 'No files exist'
      });
    }
    return res.json(files);
  });
});

app.get('/files/:filename', (req, res) => {
  gfs.files.findOne({ filename: req.params.filename }, (err, file) => {
    if (!file || file.length === 0) {
      return res.status(404).json({
        err: 'No file exists'
      });
    }
    return res.json(file);
  });
});

const port = process.env.PORT || 5500;
app.listen(port, () => console.log(`Server is running on port ${port}`));

前端HTML代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>File Upload</title>
  <script  src="app.js"></script>
</head>
<body>
  <form action="/upload" method="POST" enctype="multipart/form-data">
    <input type="file" name="file" id="imageInput" accept="image/*">
    <button type="submit">Upload</button>
  </form>
</body>
</html>

备注:内容来源于stack exchange,提问作者Tabish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 07:28:06