【问题标题】:Heroku deployment: How can I point my app to app/client/build?Heroku 部署:如何将我的应用程序指向应用程序/客户端/构建?
【发布时间】:2022-02-08 14:17:44
【问题描述】:

如何将我的应用指向 app/client/build?

在将我的应用程序部署到 Heroku 时,我收到错误消息:“错误:ENOENT:没有这样的文件或目录,stat '/app/server/build/index.html'”。我添加了我的 package.json、server.js 和我的应用程序结构。

应用程序->

->客户

-构建

-公开

-src

-组件

-App.js

-index.js

->服务器

-db

-路线

-server.js

-package.json

-过程文件

  • 等等……

它需要指向app/client/build/index.html。

我不知道 heroku 从哪里获取 app/server/build/index.html 中的 app/server 部分,我知道它是从 server.js 中的以下代码获取 build/index.html 部分:

'''

// server static in prod env
if(process.env.NODE_ENV === 'production') {
//   Set static folder
  app.use(express.static('build'));

  app.get('*', (req,res) => {
  res.sendFile(path.resolve(__dirname, 'build', 'index.html'))
  });
}

''' 完整的 server.js 文件 '''

const express = require("express");
const app = express();
const path = require('path');
const cors = require("cors");
require("dotenv").config({ path: "config.env" });
const port = process.env.PORT || 5000;
app.use(cors());
app.use(express.json());
app.use(require("./routes/record"));
// get driver connection
const dbo = require("./db/conn");

// server static in prod env
if(process.env.NODE_ENV === 'production') {
//   Set static folder
  app.use(express.static('build'));

  app.get('*', (req,res) => {
  res.sendFile(path.resolve(__dirname, 'build', 'index.html'))
  });
}

app.listen(port, () => {
  // perform a database connection when server starts
  dbo.connectToServer(function (err) {
    if (err) console.error(err);

  });
  console.log(`Server is running on port: ${port}`);
});

'''

我怀疑 'app/server/' 部分可能来自 npm 构建应用程序的方式,但我只是怀疑。 包.json:

'''

    {
  "name": "server",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "cd server && node server.js",
    "heroku-post-build": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client",
    "server": "cd server && node server.js",
    "client": "npm start --prefix client",
    "dev": "concurrently \"npm run server\" \"npm run client\"",
    "test": "echo \"Error: no test specified\" && exit 1"
    },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "concurrently": "^7.0.0",
    "cors": "^2.8.5",
    "dotenv": "^14.2.0",
    "express": "^4.17.2",
    "mongodb": "^4.3.1"
  }
}

'''

如果我应该添加其他可能有助于解决此问题的文件,请告诉我。顺便说一句,这个社区很棒!很高兴我在这个平台上学到的一切。

【问题讨论】:

    标签: node.js heroku server client mern


    【解决方案1】:

    我将 client/build 添加到 static 和 resolve 语句中,应用程序现在指向 heroku 上的 build 文件夹:

    '''

    app.use(express.static('client/build'));
    
      app.get('*', (req,res) => {
      res.sendFile(path.resolve(__dirname, 'client/build', 'index.html'))
      });
    

    '''

    【讨论】:

      猜你喜欢
      • 2019-07-17
      • 1970-01-01
      • 2015-10-17
      • 2012-11-22
      • 2012-07-16
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多