无法使用Express / Node服务静态HTML文件

时间:2018-09-19 12:03:20

标签: node.js reactjs express

我正在将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时-与本地主机不同,我仍然看到索引仍然存在。

有人可以帮我吗?非常感谢。

1 个答案:

答案 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 */