4 ms·
Is there a plan for Node.js to get `import` any times soon? Will we need babel in order to use this for months? years? ever?
by hiphipjorge 10y ago
Is there a plan for Node.js to get `import` any times soon? Will we need babel in order to use this for months? years? ever?
- bmeck 10y agohttps://github.com/nodejs/node-eps/blob/master/002-es6-modules.md https://github.com/nodejs/node-eps/blob/master/002-es6-modul... was merged today; v8 C++ API for node to truly support it has not been implemented yet, should be in next LTS at current pace (next year).
- spankalee 10y agoWow, a new extension for ES modules? That seems really unfortunate. Why can't node parse a file to detect if it's a module? The presence of a top-level import or export means it's a module. If it's not, then the parsed file can be kept if the file is also in strict mode. If it's sloppy, it'll have to be re-parsed. Seems like a small penalty if the goal is to enable migration. Also, why worry about ES modules importing Common JS? Just disallow that and let projects migrate to ES modules bottom-up. Then you don't have to worry about executing a Common JS module to determine what its exports are or circular dependency problems.
- bmeck 10y agoThere is a pretty epic thread that I suggest you just read the tail end of https://github.com/nodejs/node-eps/pull/3#issuecomment-214761400 https://github.com/nodejs/node-eps/pull/3#issuecomment-21476... . Basically we tried detection via source code as the first proposal; ambiguities at runtime that do not throw errors make it absolutely impossible to do safely, performance problems, and tooling integration problems.
- banhfun 10y agoIt needs to be implemented in V8 before Node.js can support it.
- hiphipjorge 10y agoAre there any plans for V8 to do that soon?
- empyrical 10y agoThey're working on it: https://bugs.chromium.org/p/v8/issues/detail?id=1569 https://bugs.chromium.org/p/v8/issues/detail?id=1569
- inglor 10y agoThere is/was a vote on this pretty soon. We are deciding how modules would work - with a new file extension? With a module.json? With a separate entry entry in package.json? Lots of decisions to be made :)
- bmeck 10y agoVote was at: https://github.com/nodejs/node/issues/5648 https://github.com/nodejs/node/issues/5648
- abritinthebay 10y agoSurely they should work the way they work in ES6? Any solution that requires extra work (file extension, another file to maintain) is a non-starter. Frankly it should work how Babel transpiles it - because there's no reason for it not to.
- mudetroit 10y agoES6 didn't define precisely how module loading worked, one of the reasons it isn't actually implemented yet. And there are actual reasons why the method babel currently uses won't precisely match the actual implementations (see hierarchal v flat dependencies)
- abritinthebay 10y agoThose problems are just as present in CJS as far as I'm aware though...? Yet they were solved for that.
- deleted 10y ago[deleted]