Error: Uncaught ReferenceError: module is not defined when using module.export

Error: Uncaught ReferenceError: module is not defined when using module.export

完整错误:未捕获的引用错误:模块未定义在 vsop87Bearth.js:1

我正在尝试使用我从这个 (https://github.com/commenthol/astronomia) 存储库中找到的一些 js 文件来计算太阳的直角坐标。我是 js 和服务器的新手,所以我不确定如何使用 module.exports。 有一个名为 vsop87Bearth.js 的文件,其中包含一些模拟地球的坐标,它看起来像这样:

module.exports = {
  stuff: numbers,
  name: "earth"
};

我需要使用 vsop87Bearth.js 文件和一个名为 position() 的函数来完成我需要的操作。这是模块 Funcion_PSol.js 我正在尝试计算的东西:

import position from './astronomia-master/src/solarxyz.js'
import Planet from './astronomia-master/src/planetposition.js'
import * as earth from './astronomia-master/data/vsop87Bearth.js' //I'm not sure of THIS line
var tierra = new Planet(earth);
var pos = position(earth, 2448908.5)

另外,错误可能是由HTML文件引起的,就是这个:

<!DOCTYPE html>
<html>
<head>
    <script type="module" src="./astronomia-master/data/vsop87Bearth.js"></script>
    <script type="module" src="Funcion_PSol.js"></script>
</head>
</html>

注意:我使用 browsersync 来托管我的项目,我没有使用 Node

我认为你想做的是:

const earthData = require('astronomia/data/vsop87Bearth')

这会将您想要的数据导入到 vsop87Bearth 变量中。然后该变量将具有您想要的属性,例如 earthData.LearthData.name.

他们的 README 文件有更多示例:https://github.com/commenthol/astronomia#using-a-single-package


只是一个反馈,当你"import as"

import * as earth from './astronomia-master/data/vsop87Bearth.js'

您使用的是 earth 变量,而不是您使用的 data.earth

由于您使用的是 esm 语法,因此需要将导出语法更新为以下内容。


export = {
  stuff: numbers,
  name: "earth"
};

https://nodejs.org/api/esm.html#esm_json_modules