Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error combining with 6to5ify #39

Open
akulapid opened this issue Feb 1, 2015 · 12 comments
Open

Error combining with 6to5ify #39

akulapid opened this issue Feb 1, 2015 · 12 comments

Comments

@akulapid
Copy link

akulapid commented Feb 1, 2015

I'm trying to do a brfs transform after 6to5ify, but get the following error.

browserify()
    .require("main", { entry: true })
    .transform(6to5ify)
    .transform(brfs)
    .bundle()
    .pipe(fs.createWriteStream(path.join('app.js')));
events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: tried to statically call { readFile: [Function: readFile], readFileSync: [Function: readFileSync], readdir: [Function: readdir], readdirSync: [Function: readdirSync] } as a function while parsing file: /Users/akula/foo/main.js while parsing file: /Users/akula/foo/main.js
    at error (/Users/akula/foo/node_modules/brfs/node_modules/static-module/index.js:71:49)
    at traverse (/Users/akula/foo/node_modules/brfs/node_modules/static-module/index.js:247:24)
    at walk (/Users/akula/foo/node_modules/brfs/node_modules/static-module/index.js:216:13)
    at walk (/Users/akula/foo/node_modules/brfs/node_modules/static-module/node_modules/falafel/index.js:60:9)
    at /Users/akula/foo/node_modules/brfs/node_modules/static-module/node_modules/falafel/index.js:51:25
    at Array.forEach (native)
    at forEach (/Users/akula/foo/node_modules/brfs/node_modules/static-module/node_modules/falafel/index.js:8:31)
    at /Users/akula/foo/node_modules/brfs/node_modules/static-module/node_modules/falafel/index.js:49:17
    at Array.forEach (native)
    at forEach (/Users/akula/foo/node_modules/brfs/node_modules/static-module/node_modules/falafel/index.js:8:31)

btw, there's a double "while parsing file" in the message.

My main.js looks like this.

import fs from 'fs';

var foo = fs.readFileSync(__dirname + '/foo.html');
console.log(foo.toString());

If I change the import to a require and don't do 6to5ify it works fine, but together it gives the error.

@erykpiast
Copy link

Ack! The same problem with [email protected] and [email protected] on [email protected] for Linux.

@erykpiast
Copy link

But it works perfectly fine when used like

var fs = require('fs');
var content = fs.readFileSync(__dirname + '/file', 'utf8');

I don't have to disable 6to5.

@vegetableman
Copy link

Faced this problem as well.

@danharper
Copy link

I'm guessing this is down to how Babel (was: 6to5) transpiles ES6 imports. This:

import fs from 'fs'

Becomes this:

var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };

var fs = _interopRequire(require("fs"));

If you want to go this route, resorting to a regular require call works fine:

var fs = require('fs');

@nicroto
Copy link

nicroto commented Mar 18, 2015

Just hit that, too.

@lambdabaa
Copy link

agh

lambdabaa pushed a commit to lambdabaa/dav that referenced this issue Apr 8, 2015
@dustinmoorenet
Copy link

👍

@ghost
Copy link

ghost commented Apr 9, 2015

I think this could be handled upstream in static-module adding support for ES6 imports (not as much of a problem adding them here than to browserify itself since the node semantics haven't been hammered out). But then brfs should come before 6to5ify/babelify in the transform list.

@revolunet
Copy link

looks like static-module has been updated with ES6 support ? browserify/static-module@2eb7ce0

@jedrichards
Copy link

I'm using brfs 1.4.1 which pulls in static-module 1.1.3 and still can't get brfs to work happily with ES6/babelify. Using same workaround as others for the moment, var fs = require('fs').

@tomek-he-him
Copy link

@jedrichards after some time using import for importing CommonJS modules I realized it’s really a kind of hack. fs is a CommonJS module and const fs = require('fs') seems the right thing to do to me.

import is intended for real modules which use export for exporting things. And fs is not one of these yet.

59naga added a commit to 59naga/pixel-to-svg that referenced this issue Oct 8, 2015
@txwizard
Copy link

Tou say "import is intended for real modules which use export for exporting things. And fs is not one of these yet."

Over the last few days, I have created and imported modules that use both the module.exports and the plain export idiom. I have working modules that import one of each.

Mixed_Imports.zip contains GridProperties.js, which imports both CommonConstants.js, which uses the plain export idiom, and PropertyDisplayHelpers.js, which uses the module.exports idiom.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests