【发布时间】: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