This happens on our project lately in which we rely on inline flow types
It blocks running the app.
It doesn't seem to be related to any meteor package or specific npm package (except dev deps maybe).
Here is a simple reproduction repo created with meteor create --bare
We just added our babel plugins and babel config.
Things were working great before.
Minimal reproduction repo:
https://github.com/teknologist/meteor-flow-types-bug
Just clone, run meteor npm i and then meteor run.
Error output:
=> Errors prevented startup:
While processing files with ecmascript (for target web.browser):
/Volumes/Dev/Dev/charismatic-project/flow-test/node_modules/ast-types/lib/types.js:663:19: /client/import/types.js: did not recognize object of type "TypeAlias"
at Object.getFieldNames (/Volumes/Dev/Dev/charismatic-project/flow-test/node_modules/ast-types/lib/types.js:663:19)
at visitChildren (/Volumes/Dev/Dev/charismatic-project/flow-test/node_modules/ast-types/lib/path-visitor.js:223:36)
at Visitor.PVp.visitWithoutReset (/Volumes/Dev/Dev/charismatic-project/flow-test/node_modules/ast-types/lib/path-visitor.js:204:20)
at NodePath.each (/Volumes/Dev/Dev/charismatic-project/flow-test/node_modules/ast-types/lib/path.js:101:26)
at visitChildren (/Volumes/Dev/Dev/charismatic-project/flow-test/node_modules/ast-types/lib/path-visitor.js:219:18)
at Visitor.PVp.visitWithoutReset (/Volumes/Dev/Dev/charismatic-project/flow-test/node_modules/ast-types/lib/path-visitor.js:204:20)
at visitChildren (/Volumes/Dev/Dev/charismatic-project/flow-test/node_modules/ast-types/lib/path-visitor.js:246:25)
at Visitor.PVp.visitWithoutReset (/Volumes/Dev/Dev/charismatic-project/flow-test/node_modules/ast-types/lib/path-visitor.js:204:20)
at Visitor.PVp.visit (/Volumes/Dev/Dev/charismatic-project/flow-test/node_modules/ast-types/lib/path-visitor.js:133:29)
at transform (/Volumes/Dev/Dev/charismatic-project/flow-test/node_modules/reify/lib/compiler.js:85:23)
at PluginPass.visitor.Program (/Volumes/Dev/Dev/charismatic-project/flow-test/node_modules/babel-plugin-transform-es2015-modules-reify/index.js:73:9)
at newFn
(/Users/eric/.meteor/packages/ecmascript/.0.6.3.14dfzi9++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/babel-compiler/node_modules/babel-traverse/lib/visitors.js:276:21)
at NodePath._call
(/Users/eric/.meteor/packages/ecmascript/.0.6.3.14dfzi9++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/babel-compiler/node_modules/babel-traverse/lib/path/context.js:76:18)
at NodePath.call
(/Users/eric/.meteor/packages/ecmascript/.0.6.3.14dfzi9++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/babel-compiler/node_modules/babel-traverse/lib/path/context.js:48:17)
at NodePath.visit
(/Users/eric/.meteor/packages/ecmascript/.0.6.3.14dfzi9++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/babel-compiler/node_modules/babel-traverse/lib/path/context.js:105:12)
at TraversalContext.visitQueue
(/Users/eric/.meteor/packages/ecmascript/.0.6.3.14dfzi9++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/babel-compiler/node_modules/babel-traverse/lib/context.js:150:16)
at TraversalContext.visitSingle
(/Users/eric/.meteor/packages/ecmascript/.0.6.3.14dfzi9++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/babel-compiler/node_modules/babel-traverse/lib/context.js:108:19)
at TraversalContext.visit
(/Users/eric/.meteor/packages/ecmascript/.0.6.3.14dfzi9++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/babel-compiler/node_modules/babel-traverse/lib/context.js:192:19)
at Function.traverse.node
(/Users/eric/.meteor/packages/ecmascript/.0.6.3.14dfzi9++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/babel-compiler/node_modules/babel-traverse/lib/index.js:114:17)
at traverse
(/Users/eric/.meteor/packages/ecmascript/.0.6.3.14dfzi9++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/babel-compiler/node_modules/babel-traverse/lib/index.js:79:12)
at File.transform
(/Users/eric/.meteor/packages/ecmascript/.0.6.3.14dfzi9++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/babel-compiler/node_modules/babel-core/lib/transformation/file/index.js:558:35)
at
/Users/eric/.meteor/packages/ecmascript/.0.6.3.14dfzi9++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/babel-compiler/node_modules/babel-core/lib/transformation/pipeline.js:73:19
at File.wrap
(/Users/eric/.meteor/packages/ecmascript/.0.6.3.14dfzi9++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/babel-compiler/node_modules/babel-core/lib/transformation/file/index.js:574:16)
at Pipeline.transformFromAst
(/Users/eric/.meteor/packages/ecmascript/.0.6.3.14dfzi9++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/babel-compiler/node_modules/babel-core/lib/transformation/pipeline.js:70:17)
at compile
(/Users/eric/.meteor/packages/ecmascript/.0.6.3.14dfzi9++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/babel-compiler/node_modules/meteor-babel/index.js:65:43)
at Cache.Cp.get
(/Users/eric/.meteor/packages/ecmascript/.0.6.3.14dfzi9++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/babel-compiler/node_modules/meteor-babel/cache.js:94:19)
at Object.compile
(/Users/eric/.meteor/packages/ecmascript/.0.6.3.14dfzi9++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/babel-compiler/node_modules/meteor-babel/index.js:48:23)
at Object.Babel.compile (packages/babel-compiler.js:48:24)
at packages/babel-compiler.js:162:22
at Function.time (/tools/tool-env/profile.js:305:10)
at profile (packages/babel-compiler.js:192:20)
at BabelCompiler.BCp.processOneFileForTarget (packages/babel-compiler.js:161:20)
at BabelCompiler.<anonymous> (packages/babel-compiler.js:93:26)
at Array.forEach (native)
at BabelCompiler.BCp.processFilesForTarget (packages/babel-compiler.js:92:14)
It seems the new reify plugin breaks flow types compatibility.
It just happens when using flow inline types like:
type TestType = {
item: string
}
In a js file:
//@flow
import { Meteor } from 'meteor/meteor';
type TestType = {
item: string
}
Meteor.startup(function () {
console.log('Hello World!');
});
And we are using transform-flow-strip-types in .babelrc:
{
"presets": [
"meteor",
"flow"
],
"plugins": [
"transform-flow-strip-types"
]
}
After inspecting, the problem was raised after upgrading babel-preset-meteor to 6.24 (an therefore
babel-plugin-transform-es2015-modules-reify to 0.5.0)
Downgrading to "babel-preset-meteor": "6.23.1" solved the issue for the time being.
Many thanks in advance!