我正在将Express与Node一起使用,然后用它构建一个React应用程序,该应用程序是一个页面,除了一个静态HTML文件。
我在本地工作,因此当我转到localhost:3000/static-file.html
时,可以看到该文件。但这在生产中不起作用。
我什至无法击中任何测试console.log
语句,因此我知道在请求static-file.html
时没有任何击中。请参阅我的app.js
文件的以下部分:
if (process.env.NODE_ENV === "production") {
app.get('/static-file.html', function (req, res) {
console.log('test1');
});
app.get('static-file.html', function (req, res) {
console.log('test2');
});
app.get('static-file', function (req, res) {
console.log('test3');
});
app.get('/static-file', function (req, res) {
console.log('test4');
});
app.use(express.static("client/build"));
}
当我转到production-site.com/static-file.html时-与本地主机不同,我仍然看到索引仍然存在。
有人可以帮我吗?非常感谢。
答案 0 :(得分:1)
Try something like this:
const express = require('express');
const app = express();
const path = require('path');
// the __dirname is the current directory from where the script is running
app.use(express.static(__dirname));
app.use(express.static(path.join(__dirname, 'build')));
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname + '/build/index.html'))
})
/* Here build is the production build directory and index.html is the main html page to show */