【问题标题】:Why can't my server access my build folder?为什么我的服务器无法访问我的构建文件夹?
【发布时间】:2020-04-21 15:32:53
【问题描述】:

尝试使用 Heroku 将反应投入生产。构建本身可以工作,但是当我在生产环境中打开应用程序时,我会看到一个空白屏幕,上面显示“找不到路线”。我相信这是因为构建文件夹无法访问,该文件夹及其所有内容都显示为灰色,就好像它被忽略了一样。我的其他项目以前从未这样做过,尽管这是第一次在 Heroku 上放置一个 React 应用程序。 这是我的 main.js:

const express = require('express')
const cors = require('cors')
const bp = require('body-parser')
import DbContext from "./db/DbConfig"

const port = process.env.PORT || 3000

let server = express()

DbContext.connect()

server.use(express.static(__dirname + '/../client/build'))

let whitelist = ['http://localhost:8080', 'https://ssb-stats.herokuapp.com'];
let corsOptions = {
  origin: function (origin, callback) {
    let originIsWhitelisted = whitelist.indexOf(origin) !== -1;
    callback(null, originIsWhitelisted);
  },
  credentials: true
};
// @ts-ignore
server.use(cors(corsOptions))

server.use(bp.urlencoded({ extended: true }))
server.use(bp.json())

server.use((error, req, res, next) => {
  console.error(error);
  res.status(error.status || 400).send({ error: error.message })
})

server.use('*', (req, res, next) => {
  res.status(404).send("Route not found")
})

server.listen(port, () => { console.log(`Server is running on port: ${port}`) })

我认为里面的一切看起来都很好,我不确定是包装问题还是什么,但我们将不胜感激任何帮助!

【问题讨论】:

    标签: node.js reactjs heroku production-environment


    【解决方案1】:

    你应该使用:

    server.use(express.static(path.join(__dirname, '/../client/build')));
    

    由于是访问上层目录,所以需要创建路径,不要拼接。

    还要使用path,你需要它:const path = require('path');

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-01
      • 2017-12-27
      • 2012-05-20
      • 1970-01-01
      • 2021-02-27
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多