Изменение имени переменной приводит к тому, что код не работает - PullRequest
0 голосов
/ 06 августа 2020

У меня есть следующий код для запуска приложения angular с сервера node.js:

const root = path.join(__dirname, 'frontend/dist', 'learn-playV2');

app.get('*', function (req, res) {
  fs.stat(root + req.path, function (err) {
    if (err) {
      res.sendFile("index.html", {root});
    } else {
      res.sendFile(req.path, {root});
    }
  })
});
app.listen(port);

Но я хочу иметь возможность изменить переменную 'root' на 'rootLocal' (Я хочу иметь параметр для root) в зависимости от того, как я запускаю приложение

const rootLocal = path.join(__dirname, 'frontend/dist', 'learn-playV2');

app.get('*', function (req, res) {
  fs.stat(rootLocal + req.path, function (err) {
    if (err) {
      res.sendFile("index.html", {rootLocal});
    } else {
      res.sendFile(req.path, {rootLocal});
    }
  })
});
app.listen(port);

По какой-то причине мой код не запускается, когда я это делаю, даже если ни одна переменная нигде еще в моем коде. Я получаю эту ошибку:

Ошибка: ENOENT: нет такого файла или каталога, stat 'C: \ index. html'

Есть идеи, почему?

1 Ответ

2 голосов
/ 06 августа 2020

Поскольку sendFile ожидает объект с root:

Попробуйте следующее:

if (err) {
  res.sendFile("index.html", { root: rootLocal });
} else {
  res.sendFile(req.path, { root: rootLocal });
}

Создание объекта { root } является сокращением для { root: root }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...