FetchAPI. Я получаю пустую строку с моего express сервера - PullRequest
0 голосов
/ 12 февраля 2020

Я настроил сервер express. js на порт 4000. получение запроса и отправка текстовой строки.

let express = require("express");
const app = express();
const port = 4000;

app.listen(port, () => { console.log(`SERVER is running on port ${port}`)});

app.use(express.text());

app.get("/", (req,res) =>{
   console.log("Get from /");
   res.send("Hello world");
});

и я пытаюсь получить строку "Hello world", используя fetchApi.

window.onload = ()=>{
  fetch("http://127.0.0.1:4000/", {
      method: "GET",
      mode: "no-cors"
  }).then(res=>{
      return res.text();
  }).then( text => {
      console.log(text);
  });
};

получаю пустую строку в консоли, но когда я открываю сетевые отправленные запросы, я вижу сообщение в ответе сети.

Ответы [ 2 ]

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

Вы сказали:

 mode: "no-cors"

Что означает: «Я не собираюсь делать ничего, требующего от сервера предоставления разрешения с помощью CORS, поэтому не заполняйте консоль ошибками, если У меня нет этого разрешения ".

Поскольку для чтения ответа из разных источников требуется разрешение от CORS, и вы сказали, что у вас нет желания , вы получаете пустая строка, когда вы пытаетесь прочитать ответ.

Если вы хотите прочитать ответ, вам нужен CORS, поэтому удалите конфигурацию mode.

0 голосов
/ 12 февраля 2020

Если вы используете последнюю версию Express, попробуйте этот код, и вам не нужно express .text ():

 const express = require("express");
 const app = express();
 const port = 4000;
 app.listen(port, () => { console.log(`SERVER is running on port ${port}`)}); 
 app.get("/", (req,res) =>{ console.log("Get from /"); res.send("Hello world") });

Тогда:

window.onload = ()=>{ fetch("http://127.0.0.1:4000/", { method: "GET"}).then(res=>{ return res }).then( text => { console.log(text); }); };
...