我试图在我的nodeJS应用程序中使用mapquest api,但它给我这个错误:
OperationalError: Status is REQUEST_DENIED. You must use an API key to authenticate each request to Google Maps Platform APIs. For additional information, please refer to http://g.co/dev/maps-no-account
下面是模型:
const geocoder = require('../utils/geocoder');
BootcampSchema.pre('save', async function(next) {
const loc = await geocoder.geocode(this.address);
this.location = {
type: 'Point',
coordinates: [loc[0].longitude, loc[0].latitude],
formattedAddress: loc[0].formattedAddress,
street: loc[0].streetName,
city: loc[0].city,
state: loc[0].stateCode,
zipcode: loc[0].zipcode,
country: loc[0].countryCode
};
// Do not save address in DB
this.address = undefined;
next();
});
地理编码器工具:
const nodeGeoCoder = require('node-geocoder');
const options = {
provider: process.env.GEOCODER_PROVIDER,
httpAdapter: 'https',
apiKey: process.env.GEOCODER_API_KEY,
formatter: null
};
const geocoder = nodeGeoCoder(options);
module.exports = geocoder;
API密钥在单独.env文件中定义
如何解决这个问题?
5条答案
按热度按时间hjzp0vay1#
错误消息说,“谷歌Map平台API”,这不是MapQuest。如果有MapQuest错误,我可以帮助,但这不是MapQuest API错误消息。你可能想把MapQuest标签换成谷歌标签。我希望这有助于指向正确的方向。
edqdpe6u2#
看起来这个问题是关于Env变量的。有一个类似的问题。只要使用geocoder.js本身的值,就像下面一样。它对我很有效。
我创建了一个单独的文件,然后导入,它的工作以及。所以问题是与进程。env
常量选项= {提供程序:'mapquest',http适配器:'http',apiKey:'YOUR_API_KEY',格式化程序:空值}
bfnvny8b3#
问题是在配置dotenv包时,在server.js或index.js文件中你必须在routes之前调用env变量的路径,所以在server.js的顶部直接调用dotenv并配置路径如下:
很抱歉来晚了,但我希望能帮上忙。
tzxcd3kk4#
您需要在sever.js文件中的路由之前调用dotenv。
请遵循以下内容:
mepcadol5#
几点建议
1.检查提供程序
1.确保在.env文件加载后需要路由干杯