【问题标题】:Flow is giving SyntaxError on importsFlow 在导入时给出 SyntaxError
【发布时间】:2020-11-11 06:37:34
【问题描述】:

这是我的代码:

// @flow
import { EntityModel } from '@http-utils/hateoas';

我编译它:

babel src/ -d dist/

然后我运行它,但出现运行时错误:

$ node dist/http-utils-hateoas-example.js
import { EntityModel } from '@http-utils/hateoas';
       ^
SyntaxError: Unexpected token {
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)

我做错了什么?

编辑

根据 Flow 文档,我的 babel 配置只有 @babel/preset-flow。看起来这只是剥离流。如何配置 babel 以对可以在 nodejs 上运行的代码进行额外的编译?

{
  "presets": [
    "@babel/preset-flow"
  ]
}

【问题讨论】:

  • 从堆栈跟踪看起来您正在尝试使用 Common JS 加载 ESModule
  • 嗨 Aleksey,我已将我的 babel 配置添加到问题中。想办法让babel生成Common JS,以便node.js可以执行
  • 问题解决了!我只需要另一个预设:@babel/preset-env

标签: flowtype


【解决方案1】:

解决方案非常简单。我所需要的只是另一个可以转换为 CommonJS 的预设。

{
  "presets": [
    "@babel/preset-flow",
    @babel/preset-env
  ]
}

【讨论】:

    猜你喜欢
    • 2014-05-29
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多