node.js-ReferenceError:未定义导航器

时间:2020-02-25 16:32:23

标签: javascript node.js geolocation

我遇到 ReferenceError:未定义导航器在node.js上运行以下代码:

navigator.geolocation.getCurrentPosition((data) => {
  console.log(data);
});

我认为问题是 Navigator.geolocation 是Web API,并且无法在节点上运行。有没有一种方法可以模拟浏览器并在node.js上使用它?

非常感谢

3 个答案:

答案 0 :(得分:0)

是否可以模拟浏览器并在node.js上使用它?

browser-env是可用于模拟Web API的一个库。

import browserEnv from 'browser-env';

然后:

browserEnv(['navigator']);

但是,这会污染全局名称空间,因此请谨慎使用。

答案 1 :(得分:0)

我之所以创建它是因为分析不支持节点,所以它需要条件导入

import isNode from 'detect-node'
export async function analyticsLogEvents(event, params) {
  if (!isNode) {
    const firebase = await import('firebase/app')
    await import('firebase/analytics')
    firebase.default.analytics().logEvent(event, params)
  }
}

答案 2 :(得分:-1)

Node.js是服务器端技术,这意味着它无法直接访问用户的地理位置。

您应该问的是如何在客户端使用javascript获取地理位置,然后只需通过Ajax将信息发送到服务器。

更多信息在这里:http://www.w3schools.com/html/html5_geolocation.asp

当然有一些库可以简化此操作。