javascript - GoogleMap JSX 组件中的 undefined variable

标签 javascript node.js reactjs undefined serverside-javascript

在我的应用程序中,我的 Google Map JSX 组件(由其他人编写)的开头有以下代码片段:

import React from 'react';
import { Button } from 'react-bootstrap';
import {GoogleMapLoader, GoogleMap, Marker, InfoWindow, DirectionsRenderer} from 'react-google-maps';
import {
  default as canUseDOM,
} from "can-use-dom";
const DirectionsService = new google.maps.DirectionsService();

当我使用客户端渲染并在客户端上执行此代码时,它运行时没有错误并具有预期的行为。但是,当我使用 ReactDOM.renderToString() 切换到服务器端渲染时,我遇到了以下错误:

var DirectionsService = new google.maps.DirectionsService();
                            ^
ReferenceError: google is not defined

详细看代码。在我的代码之前,变量“google”实际上并没有在任何地方定义。

我的问题是:

  1. 变量“google”在哪里定义?
  2. 为什么客户端渲染正常,而服务器端却报错?

非常感谢您的解释。

最佳答案

变量google 来自https://maps.googleapis.com/maps/api/js,即loaded在客户端上异步。

在服务器上,这个脚本没有加载,事情就崩溃了。出现 component you are using不是完全同构的,所以它只能在客户端工作。

我用过 google-map-react在过去,强烈推荐和完全同构。

关于javascript - GoogleMap JSX 组件中的 undefined variable ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37226948/

相关文章:

javascript - 如何找到旋转向量的 x,y 坐标

reactjs - Redux Form - 初始值不随状态更新

javascript - 单击 <Link> 元素时路由器会复制

reactjs - 类型错误 : Cannot assign to read only property 'quantity' of object '#<Object>'

javascript - 主干 View 未加载

javascript - 如何使用 AngularJS 和 Bootstrap 将 ngTagsInput 导入到您的项目中?

javascript - 向数组中添加一个新对象

node.js - 无法在环回上实现 oauth2

Java Websockets + 事件监听器。这是正确的方法吗?

javascript - 将两个 github 存储库部署到单个 azure Web 应用程序