首页 > 解决方案 > Flow 在导入时给出 SyntaxError

问题描述

这是我的代码:

// @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"
  ]
}

标签: flowtype

解决方案


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

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

推荐阅读