Файл с файлами CSS и JS не обслуживается на сервере и печатает ��U�v�8�� + - PullRequest
1 голос
/ 27 мая 2020

Когда я запускаю свое приложение hapi js локально, оно работает, но когда я развертываю его на сервере, оно не работает. Страница может обслуживать файлы html, но если файл HTML имеет css или bootrap, то он печатает странные символы, такие как ��U�v�8�� +

Ссылка, которая показывает странный ответ : https://us-central1-fir-app-85853.cloudfunctions.net/v1/teacher/list

Вот мой index. js файл.

Как я могу исправить эту проблему?

'use strict';
const functions = require('firebase-functions');
const api = require('./server');

exports.v1 = functions.https.onRequest(async (event, resp) => {
  let server = await api.startServer();
  const options = {
    method: event.httpMethod,
    headers: event.headers,
    url: event.path,
    payload: event.body
  };

  return server
    .inject(options)
    .then(response => {
        delete response.headers['content-encoding']
        delete response.headers['transfer-encoding']
        response.headers['x-powered-by'] = 'hapijs'
        resp.set(response.headers);
        return resp.status(response.statusCode).send(response.result);
    })
    .catch(error => resp.status(500).send(error.message || "unknown error"));
});

Вот мой полный исходный код на github https://github.com/kartikgreen/hapijs-firebase

Ответы [ 2 ]

2 голосов
/ 31 мая 2020

Я только что удалил строку 'accept-encoding': 'gzip, deflate, br' в объекте заголовков запроса, чтобы не запрашивать сжатие gzip.

Этот ответ уже есть в ссылке

0 голосов
/ 29 мая 2020

Это, скорее всего, проблема с кодировкой символов.

Есть несколько причин, одна из них - выводимая кодировка символов, отличная от UTF-8.

так, скажем, ваш документ выводится в ISO -8859-1 (известный как Latin-1), если вы не установите набор символов, браузер по умолчанию будет использовать UTF-8. Думайте об этом как о выводе китайского языка, а затем о том, чтобы попросить синтаксический анализатор языка обработать его как японский, он никогда не поймет! Заголовок выглядит следующим образом: -

header("Content-Type: text/html; charset=ISO-8859-1");

Другой возможной причиной является Метка порядка байтов (BOM) .

Если ваш сценарий случайно вывод каких-то пустых данных до того, как это может добавить эти невидимые символы.

Есть множество ответов по спецификациям на переполнение стека, поэтому я не буду их повторять.

Обычно я бы сказал, запустите через W3 C Средство проверки интернационализации , но ваша страница, кажется, убивает его (что может быть связано с firebase). Может быть, вы могли бы записать необработанный вывод в файл и прогнать его таким образом?

...