You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

@here/maps-api-for-javascript在Next.js中报错Unexpected token 'export'如何解决

问题原因

该报错的核心是@here/maps-api-for-javascript发布的是纯ES模块格式代码,而Next.js默认不会对node_modules下的第三方包做ES语法转译,服务端渲染阶段Node.js直接加载未转译的ES模块时,就会识别不了export语法抛出错误。

解决方案

方案1:配置Next.js转译指定第三方包

Next.js 13+ 提供了transpilePackages配置项,可以指定需要转译的node_modules包:

  1. 打开项目根目录的next.config.js文件,添加配置:
/** @type {import('next').NextConfig} */
const nextConfig = {
  transpilePackages: ['@here/maps-api-for-javascript'],
  // 其他原有配置保留
}

module.exports = nextConfig
  1. 重启开发服务即可生效。

方案2:仅在客户端侧加载该包

HERE Maps API是纯浏览器端运行的库,不需要参与服务端渲染,你可以选择两种客户端加载方式避开服务端解析报错:

方式A:动态导入组件禁用SSR

import dynamic from 'next/dynamic'

// 单独把地图逻辑封装为组件,动态引入时关闭SSR
const MapComponent = dynamic(() => import('./components/Map'), {
  ssr: false,
  loading: () => <p>地图加载中</p>
})

// 页面中直接使用<MapComponent />即可

方式B:useEffect中异步导入

import { useEffect } from 'react'

export default function MapPage() {
  useEffect(() => {
    const loadMap = async () => {
      const H = (await import('@here/maps-api-for-javascript')).default
      // 此处写初始化地图的逻辑,仅在客户端执行
    }
    loadMap()
  }, [])

  return <div id="map-container" style={{ width: '100%', height: '600px' }}></div>
}

方案3:降级使用UMD格式引入(可选)

如果前两种方案都不生效,可以直接把HERE Maps的UMD格式SDK通过script标签引入到pages/_document.js或者app/layout.js中,直接通过全局变量H调用即可,不用安装npm包,也不会有模块解析问题。


内容的提问来源于stack exchange,提问作者Prashanth shane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 22:15:04