Javascript 来自控制台的错误消息,说明未定义res

Javascript 来自控制台的错误消息,说明未定义res,javascript,node.js,Javascript,Node.js,我目前正在尝试使用javascript(node.js)构建一个fullstack应用程序。我的目标是创建一个带有虚拟数据的天气API,一切都进行得很顺利,直到最后一部分,我试图让用户的搜索结果显示在搜索框下面。我曾尝试从主js文件中使用fetch API从index.js文件(包含服务器、导入的数据等)检索数据,但我继续从控制台收到一条错误消息,指出未定义“res”“res.data.city”是我用来从用户那里获取输入信息并将其呈现到屏幕上的,但我一直被告知它没有定义;我相信它应该来自ind

我目前正在尝试使用javascript(node.js)构建一个fullstack应用程序。我的目标是创建一个带有虚拟数据的天气API,一切都进行得很顺利,直到最后一部分,我试图让用户的搜索结果显示在搜索框下面。我曾尝试从主js文件中使用fetch API从index.js文件(包含服务器、导入的数据等)检索数据,但我继续从控制台收到一条错误消息,指出未定义“res”“res.data.city”是我用来从用户那里获取输入信息并将其呈现到屏幕上的,但我一直被告知它没有定义;我相信它应该来自index.js文件。这是我的密码。(请做好人。我是一名新的开发人员,我只是想在编程方面提高自己。)

script.js文件(链接到html文档的主javascript文件)

js(服务器运行时的文件)

const express=require('express'))
常量app=express();
const cors=require('cors')
const fakeWeatherData=require('./data.js')
应用程序使用(cors());
应用程序获取('/weather',(请求,res)=>{
让cityName=req.query.city.toLowerCase();
for(设i=0;i
html(将呈现给broswer的主文件)


城市:
点击

@GaloisGirl是正确的,
res
没有定义,因为您没有在设置
submit
事件侦听器的匿名函数范围内定义
res

考虑到您尚未使用
async
/
await
,似乎最好还是使用承诺符号,这样看起来会像这样:

form.addEventListener('submit', (e) => {

  e.preventDefault();


  let location = document.querySelector('.cityName');

  let celsius = document.querySelector('.celsius')

  let fahrenheit = document.querySelector('.fahrenheit')

  let error = document.querySelector('.error')

  getData()
  .then((res) => {
    if(res.data.city) {
      location.innerHTML = 'City: ' + res.data.city
      celsius.innerHTML = 'Temperature (C): ' + res.data['temperature (C)']
      fahrenheit.innerHTML = 'Temperature (F): ' + res.data['temperature (F)']
    } else {
      error.Message.innerHTML = 'SORRY! This city is not currently in our database'
    }

    textInput.value = ''
  })
})
您还需要从
getData

const getData = () => {

    return fetch('http://localhost:3000/weather/?city=' + city)


...OTHER STUFF


@GaloisGirl是正确的,
res
未定义,因为您未在设置
submit
事件侦听器的匿名函数范围内定义
res

考虑到您尚未使用
async
/
await
,似乎最好还是使用承诺符号,这样看起来会像这样:

form.addEventListener('submit', (e) => {

  e.preventDefault();


  let location = document.querySelector('.cityName');

  let celsius = document.querySelector('.celsius')

  let fahrenheit = document.querySelector('.fahrenheit')

  let error = document.querySelector('.error')

  getData()
  .then((res) => {
    if(res.data.city) {
      location.innerHTML = 'City: ' + res.data.city
      celsius.innerHTML = 'Temperature (C): ' + res.data['temperature (C)']
      fahrenheit.innerHTML = 'Temperature (F): ' + res.data['temperature (F)']
    } else {
      error.Message.innerHTML = 'SORRY! This city is not currently in our database'
    }

    textInput.value = ''
  })
})
您还需要从
getData

const getData = () => {

    return fetch('http://localhost:3000/weather/?city=' + city)


...OTHER STUFF

getData()
if(res.data.city){…
之间,没有传递任何数据。您的意思是
var res=wait getData()
?在
getData()
if(res.data.city){…
之间,没有传递任何数据。您的意思是
var res=wait getData()
const getData = () => {

    return fetch('http://localhost:3000/weather/?city=' + city)


...OTHER STUFF