Node.js 请求的模块不提供导出?

Node.js 请求的模块不提供导出?,node.js,Node.js,第一个帖子,温柔一点:) 我正在学习一点node.js,我正在尝试使用一个名为“node bom”的模块做一些事情 我熟悉调用节点模块的“require”方法。但是,作者提供了以下代码示例,该示例不适用于node.js: import {Bom} from 'node-bom' const bom = new Bom({ /// options }) bom.getParsedStateData('VIC', { bypassCache: false // default: fals

第一个帖子,温柔一点:)

我正在学习一点node.js,我正在尝试使用一个名为“node bom”的模块做一些事情

我熟悉调用节点模块的“require”方法。但是,作者提供了以下代码示例,该示例不适用于node.js:

import {Bom} from 'node-bom'

const bom = new Bom({
  /// options
})

bom.getParsedStateData('VIC', {
  bypassCache: false // default: false to use cache
})
  .then((stateData) => {
    console.log(stateData)
    /*
      {
        forecast: {}, // forecast data
        observations: {} // current station's observations data
      }
    */
  })
此代码产生以下错误:

(node:10363) ExperimentalWarning: The ESM module loader is experimental.
file:///Users/ajudge/node-bom-testing/index.mjs:1
import {Bom} from 'node-bom'
        ^^^
SyntaxError: The requested module 'node-bom' does not provide an export named 'Bom'
    at ModuleJob._instantiate (internal/modules/esm/module_job.js:93:21)
    at async ModuleJob.run (internal/modules/esm/module_job.js:108:20)
    at async Loader.import (internal/modules/esm/loader.js:128:24)
我做了一些进一步的阅读,这似乎是一个ES6问题。因此,我将文件更改为a.mjs并使用--experimental modules标志,但我仍然没有任何运气

有人能澄清我需要修改什么才能让这个模块正常工作吗


谢谢

将文件名更改为
.js

包文档中的示例更面向类型脚本(因此,
导入

在Node.JS中,您的代码应该如下所示:

const Bom=require('node-Bom'))
常量物料清单=新物料清单。物料清单({
///选择权
})
bom.getParsedStateData('VIC'{
绕过缓存:false//默认值:false以使用缓存
})
.然后((stateData)=>{
console.log(stateData)
/*
{
预测:{},//预测数据
观测:{}//当前台站的观测数据
}
*/
})

将文件名更改为
.js

包文档中的示例更面向类型脚本(因此,
导入

在Node.JS中,您的代码应该如下所示:

const Bom=require('node-Bom'))
常量物料清单=新物料清单。物料清单({
///选择权
})
bom.getParsedStateData('VIC'{
绕过缓存:false//默认值:false以使用缓存
})
.然后((stateData)=>{
console.log(stateData)
/*
{
预测:{},//预测数据
观测:{}//当前台站的观测数据
}
*/
})

运行
节点--version
时会得到什么?这似乎并不能完全解决问题。我现在有一个新的错误消息:```const Bom=new Bom({^TypeError:Bom不是一个构造函数file:///Users/ajudge/node-bom-testing/index.mjs:3:13 在async Loader.import(internal/modules/esm/Loader.js:128:24)的ModuleJob.run(internal/modules/esm/module_job.js:111:37)“``好的,谢谢。我已经按照你的建议尝试了两种语法。我仍然看到:node--experimental modules index.mjs(node:11756)experimental警告:ESM模块加载程序是实验性的。file:///Users/ajudge/node-bom-testing/index.mjs:3 常量物料清单=新物料清单。物料清单({^TypeError:Bom.Bom不是位于的构造函数file:///Users/ajudge/node-bom-testing/index.mjs:3:13 在async Loader.import(internal/modules/esm/Loader.js:128:24)的ModuleJob.run(internal/modules/esm/module_job.js:111:37)为什么要创建一个.mjs文件而不是一个简单的js文件?这仅仅是因为从我的阅读来看,除非使用.mjs文件扩展名和--experimental modules标志,否则在nodejs中无法使用ES6文件。不过,我可能错了!当运行
节点--version
时,您会得到什么?这似乎并不能完全解决问题。我有一条新的错误消息now:```const Bom=new Bom({^TypeError:Bom不是当前的构造函数file:///Users/ajudge/node-bom-testing/index.mjs:3:13 在async Loader.import(internal/modules/esm/Loader.js:128:24)的ModuleJob.run(internal/modules/esm/module_job.js:111:37)“``好的,谢谢。我已经按照你的建议尝试了两种语法。我仍然看到:node--experimental modules index.mjs(node:11756)experimental警告:ESM模块加载程序是实验性的。file:///Users/ajudge/node-bom-testing/index.mjs:3 常量物料清单=新物料清单。物料清单({^TypeError:Bom.Bom不是位于的构造函数file:///Users/ajudge/node-bom-testing/index.mjs:3:13 在async Loader.import(internal/modules/esm/Loader.js:128:24)的ModuleJob.run(internal/modules/esm/module_job.js:111:37)为什么要创建一个.mjs文件而不是一个简单的js文件呢?这仅仅是因为从我的阅读来看,除非使用.mjs文件扩展名和--experimental modules标志,否则ES6在nodejs中不起作用。不过我可能错了!