Skip to content

Instantly share code, notes, and snippets.

Last active October 16, 2017 12:30
Show Gist options
  • Save xjamundx/ffafa67925db6d7ffc4c86a7fb2bcb45 to your computer and use it in GitHub Desktop.
Save xjamundx/ffafa67925db6d7ffc4c86a7fb2bcb45 to your computer and use it in GitHub Desktop.

Trying Flow on my node.js code…Let’s see how this goes

Finding the getting started guide:

  1. google flow
  2. click “”
  3. was something else
  4. google flow javascript
  5. found
  6. Click “get started” and landed here

Following the guide:

First thoughts, okay this is for a new project, but I’m not making a new project, so adapting to my life. In this case we’ll try with my node.js project.

  1. touch .flowconfig
  2. npm install --save-dev flow-bin
  3. Add // @flow to my index.js file // seems gross to me, but doing it anyway
  4. Typing npm run-script flow thought maybe it would work, but it doesn’t. get “missing script: flow”
  5. Typing ./node_modules/.bin/flow instead (not from docs)
  6. lots of weird startup stuff…. “flow is still initializing”
  7. “Found 43 errors”
     ^ Unexpected end of input

     ^ Unexpected end of input
.... // goes on an on

Errors some pretty unrelated to anything I'm doing. Giving up.

Will Try Some More Things....

  1. google the error messages
  2. Found facebook/flow#1420 (comment) trying it
  3. "Found 49 errors" > 6 more errors than last time!!?!?
  4. Okay there's a not about the main field with that regex, trying another regex .*/node_modules/.*/\(lib\|test\).*\.json$
  5. "Found 36 errors" > hey progress
  6. Let's look at the last two
 60:     Promise.prototype.done.apply(this._promise, arguments);
                           ^^^^ property `done`. Property not found in
497: declare class Promise<+R> {
     ^ Promise. See lib: /private/tmp/flow/flowlib_22c9017e/core.js:497

 29:     return x !== 0 || 1 / (x: $FlowIssue) === 1 / (y: $FlowIssue);
  1. Seems like facebook is breaking flow. Pretty weird.
  2. Googling it.
  3. Found facebookarchive/draft-js#305
  4. @zpao says we need to update fbjs. I don't even use that dep directly, so I don't agree.
  5. Getting annoyed again, but running npm ls fbjs
p2pnodeweb@1.29.0 /Users/jamuferguson/dev/paypal/web
├─┬ flux@2.1.1
│ └─┬ fbemitter@2.0.2
│   └── fbjs@0.7.2 
└─┬ react@15.3.1
  └── fbjs@0.8.4 
  1. grep 'version":' ./node_modules/fbjs/package.json
  2. "0.1.0-alpha.7"
  3. Hmm, seems old npm i fbjs
  4. grep 'version":' ./node_modules/fbjs/package.json
  5. "version": "0.8.4"
  6. seems better, let's
  7. ./node_modules/.bin/flow
  8. "Found 38 Errors" > Okay ,that's 2 more than before" and more JSON errors in there

giving up again, for now

Copy link

Now trying to get babel to work. Seems kind of busted. Lots of these errors.

express-session deprecated undefined saveUninitialized option; provide saveUninitialized option node_modules/kraken-js/node_modules/meddleware/index.js:105:20
express-session deprecated req.secret; provide secret option node_modules/kraken-js/node_modules/meddleware/index.js:105:20
Tue, 30 Aug 2016 04:34:14 GMT unhandledRejection
SyntaxError: /Users/jamuferguson/dev/paypal/code/controllers/app/controller.js: Unexpected token (110:76)
  109 |  */
> 110 | export async function middleware(req: ExpressReq, res: any, next: function): Promise<void> {
      |                                                                             ^
  111 | 
    at Parser.pp.raise (/Users/jamuferguson/dev/paypal/code/node_modules/babylon/lib/parser/location.js:22:13)
    at Parser.pp.unexpected (/Users/jamuferguson/dev/paypal/code/node_modules/babylon/lib/parser/util.js:91:8)
    at Parser.pp.flowParsePrimaryType (/Users/jamuferguson/dev/paypal/code/node_modules/babylon/lib/plugins/flow.js:1101:8)

Copy link

xjamundx commented Aug 30, 2016

I guess we need to do this instead?

Replace next: function with next: Function

Weird that flow didn't mind the issue. Not actually seeing how to annotate functions very clearly. Looking here:

Copy link

this is totally fascinating.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment