请求的模块不提供导出?

时间:2019-05-20 03:13:08

标签: 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: 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问题。因此,我已将文件更改为.mjs并使用--experimental-modules标志,但我仍然没有运气。

任何人都可以澄清我需要进行哪些修改才能使该模块正常工作吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

将文件名更改为.js

包docs中的示例面向TypeScript(因此import)。

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

const Bom = require('node-bom')

const bom = new Bom.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
      }
    */
  })