在NodeJS应用中加载npm包时如何解决'undefined Module'错误

问题描述

我正在尝试在NodeJS应用程序中加载名为'geojson2h3'的程序包。运行npm install geojson2h3之后,我尝试按照Github中给出的初始代码说明进行测试:

import geojson2h3 from 'geojson2h3';

const polygon = {
  type: 'Feature',geometry: {
    type: 'polygon',coordinates: [
      [
        [-122.47485823276713,37.85878356045377],[-122.47504834087829,37.86196795698972],[-122.47845104316997,37.86010614563313],[-122.47485823276713,37.85878356045377]
      ]
    ]
  }
};

const hexagons = geojson2h3.featuretoH3Set(polygon,10);
// -> ['8a2830855047fff','8a2830855077fff','8a283085505ffff','8a283085506ffff']

const feature = geojson2h3.h3SetToFeature(hexagons);
// -> {type: 'Feature',properties: {},geometry: {type: 'polygon',coordinates: [...]}}

当然,这会引发SyntaxError: Cannot use import statement outside a module错误。然后,我尝试使用NodeJS require这样的方法const geojson2h3 = require('geojson2h3');,替换了import语句。这将引发Uncaught Error: undefinedModule错误。该软件包显示在我的package.json文件中,但是在我的node_modules文件夹中看不到它。我假设这与问题有关。我在这里做错了什么?

*注意:我知道这是一个与GIS相关的软件包,但问题是一个通用的NodeJS软件包问题,而不是特定于GIS的软件包。

解决方法

这与项目的构建方式有关,基本上,它不会为nodejs导出可靠版本。 strong text

因此,要概括一下这个问题,h3-js的对等依赖关系似乎对es-module不友好,如下所示。 enter image description here

据我所知,最简单的解决方案是尝试使用其他开源软件,但是如果没有符合您期望的东西,我想您可以尝试修改h3-js。来自node_modules / h3-js.js,并在相关的github页面上推送了必要的更改。 enter image description here

,

尝试:npm i安装该软件包。