DarkSky代理 - “请求未发送。错误:缺少Longitute或Latitude。“ - 节点JS请求URL,不确定为什么不工作

问题描述 投票:0回答:1

引用Git:https://github.com/devellopah/dark-sky-proxy

我对这里显示的很多概念都很陌生,并且已经非常接近,但似乎无法解决这最后一步:

DarkSky的api设置为禁止通过JQ-> getJson进行直接API调用,因为它们的CORS策略(保护API密钥,有意义)

因此,我正在完成基于上面的git设置代理的过程。我在heroku工作,这很酷,并且当我转到我的代理URL时获得默认的日期时间,所以看起来这是正确设置的。

我遇到的问题是,URL上没有任何指令可以调用以使这个简单的工具工作。

请参阅下面的代码,这是我认为最相关的整个文件。最相关的行从comment:// DarkSky API开始

我已经尝试了大量的URL,但我认为问题是缺少关于Node.js的知识(我对此知之甚少,对不起,如果这是一个非常愚蠢的问题)

从浏览器我尝试过:

也尝试从chrome控制台:

当我转到网址的根目录时,我得到了正确的:

  • 当前时间是:4/6/2019,下午5:24:31

但是,当试图让它真正起作用时,所有上述URL和试验都返回相同:

  • 请求未发送。错误:缺少经度或纬度。

问题:有人可以帮我理解我在这里缺少的是什么吗?我希望有相关的资料来阅读我所遗漏的任何知识。

感谢您阅读这篇文章的时间!

这里相关文件的源代码:

// load environment variables from .env file
require('dotenv').config()

const path = require('path')

const express = require('express')
const favicon = require('serve-favicon')
const cors = require('cors')

const DarkSky = require('dark-sky')
const RateLimit = require('express-rate-limit');

const app = express()

app.use(cors())
app.use(favicon(path.join(process.cwd(), 'favicon.ico')))

app.set('port', process.env.PORT || 3000)

app.enable('trust proxy')

const sleep = 600000; // 10 minutes

// the weather doesn't change too often
const limiter = new RateLimit({
  windowMs: sleep,
  max: 10, // limit each IP to 1 requests per windowMs
  delayMs: 0 // disable delaying - full speed until the max limit is reached
})

// Home
app.get('/', (req, res) => {
  res.send(`<div>Current time is: ${ new Date().toLocaleString() }</div>`)
})

// DarkSky API
const forecast = new DarkSky(process.env.API_KEY)

app.get('/api/v1/json', limiter, (req, res) => {
  const { lat, lon, units } = req.query

  forecast
    .latitude(lat)
    .longitude(lon)
    .units(units)
    .language('en')
    .exclude('minutely,hourly,daily,alerts,flags')
    .get()
    .then(weather => res.status(200).json(weather))
    .catch(error => res.send(error))
})

app.listen(
  app.get('port'),
  () => console.log(`Server is listening at port ${app.get('port')}`)
)
javascript jquery node.js heroku weather-api
1个回答
0
投票

弄清楚了!

引用了一个查询字符串组件,它将我送到了学习之路。

这是格式,对于将来遇到这种情况的任何人:

https://MyURL.herokuapp.com/api/v1/json?lat=42.1234&lon=-117.1234&units=[2lettercountrycode]

© www.soinside.com 2019 - 2024. All rights reserved.