NodeJS Сбой функций Firebase после развертывания - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть NodeJS и использую функции Firebase. При работе на локальном хосте он отправляет ожидаемое JSON. После развертывания его в Firebase я получаю следующую ошибку при попытке достичь конечной точки:

TypeError: Cannot read property 'stack' of undefined
    at getErrorDetails (/worker/worker.js:365:14)
    at logAndSendError (/worker/worker.js:579:12)
    at process.<anonymous> (/worker/worker.js:854:5)
    at emitTwo (events.js:126:13)
    at process.emit (events.js:214:7)
    at emitPendingUnhandledRejections (internal/process/promises.js:108:22)
    at process._tickDomainCallback (internal/process/next_tick.js:230:7)

Внешний интерфейс возвращает следующую ошибку:

Access to XMLHttpRequest at 'https://vear-node.firebaseapp.com/xmlfeed' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Я сомневаюсь, что это проблема CORS, потому что я использую промежуточное программное обеспечение Express cors и без проблем подключаюсь к другим конечным точкам на этом сервере.

Код:

const app = express().use(cors());

app.get('/xmlfeed', cors(), async (request, response) => {
    const feedResponse = await getXMLFeedData();
    const json = { products: feedResponse };
    response.json(json);
});
export const getXMLFeedData = async (): Promise<any> => {
    try {
        const response = await axios.get('https://www.nae-vegan.com/extend/catalog_81.xml');

        const parsedResponse = await parseXMLResult(response);
        const jsonString = JSON.stringify(parsedResponse);
        const jsonObject = JSON.parse(jsonString);
        const formatted = await formatNAEProducts(jsonObject);

        return Promise.resolve(formatted);
    } catch (error) {
        return Promise.reject(error);
    }
};
const parseXMLResult = async (response: any): Promise<any> => {
    var parsedResult: any = undefined;

    try {
        await parser.parseString(response.data, (err, result) => {
            parsedResult = result;
        });

        return Promise.resolve(parsedResult);
    } catch (error) {
        return Promise.reject(error);
    }
};

конечная точка: https://vear-node.firebaseapp.com/xmlfeed

Кто-нибудь знает, что может привести к возникновению ошибки после развертывания при отличной локальной работе?

Спасибо!

1 Ответ

1 голос
/ 07 февраля 2020

Вы должны разрешить все запросы происхождения cors в ваш заголовок. поскольку вы используете express framework, вы должны включить его в ваш метод app.use. проверьте код ниже.

app.use((req, res) => {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...