Node/Express 根据要求发送静态文件

Bra*_*ian 5 node.js express

我对 node/express 真的很陌生,我试图了解发送静态文件的工作原理。我设法提供了我的索引文件,但我无法提供其他文件作为 GET 请求的响应。

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

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

app.get('/portfolio', (req, res) => {
  const person = req.query.name
  var filePath = __dirname + '/client/build/' + person + '/' + 'index.html'
  res.sendFile(filePath)
  res.end()
})
Run Code Online (Sandbox Code Playgroud)

我发现了类似的问题,但似乎没有任何效果。

我发送的请求是:

fetch(`portfolio?name=${who}`)
Run Code Online (Sandbox Code Playgroud)

use*_*198 5

您的代码存在一些问题。其中之一是您在文件发送完成之前就结束了请求,另一个问题是您没有res.sendFile正确使用该方法。

尝试这样的事情:

app.get('/', (req, res) => {
  const fileDirectory = path.resolve(__dirname, '.', 'client/build/');

  res.sendFile('index.html', {root: fileDirectory}, (err) => {
    res.end();

    if (err) throw(err);
  });
})

app.get('/portfolio', (req, res) => {
  const person = req.query.name
  const fileDirectory = __dirname + '/client/build/' + person + '/';

  res.sendFile('index.html', {root: fileDirectory}, (err) => {
    res.end();

    if (err) throw(err);
  });
})
Run Code Online (Sandbox Code Playgroud)

我不建议您在遇到错误时抛出错误,但它至少应该让您知道如何使其工作。