ES2015 “import” not working in node v6.0.0 with with --harmony_modules option

前端 未结 4 1654
别跟我提以往
别跟我提以往 2020-11-29 01:59

I am using node v6.0.0 and wanted to use ES2016 (ES6). However I realized that the \"import\" syntax is not working. Isn\'t \"import\" fundamental to for writing modular cod

相关标签:
4条回答
  • 2020-11-29 02:34

    As is stated above, ES6 modules are not implemented yet.

    It appears to be a non-trivial issue to implement ES6 modules in a way that would be backward-compatible with Common JS modules, which is the current Node.js module syntax.

    However, there is a draft of an implementation, that introduces a new file extension - .mjs - for a files containing ES6 modules.

    Also, there is a counter-proposal that present an alternative approach of declaring all files with ES6 modules in package.json like so:

    {
        "modules.root": "/path/to/es6/modules"
    }
    
    0 讨论(0)
  • 2020-11-29 02:50

    They're just not implemented yet.

    Node 6.0.0 uses a version of V8 with most of ES6 features completed. Unfortunately modules isn't one of those completed features.

    node --v8-options | grep harmony 
    

    in progress harmony flags are not fully implemented and usually are not working:

    --es_staging (enable test-worthy harmony features (for internal use only))
    --harmony (enable all completed harmony features)
    --harmony_shipping (enable all shipped harmony features)
    --harmony_object_observe (enable "harmony Object.observe" (in progress))
    --harmony_modules (enable "harmony modules" (in progress))
    --harmony_function_sent (enable "harmony function.sent" (in progress))
    --harmony_sharedarraybuffer (enable "harmony sharedarraybuffer" (in progress))
    --harmony_simd (enable "harmony simd" (in progress))
    --harmony_do_expressions (enable "harmony do-expressions" (in progress))
    --harmony_iterator_close (enable "harmony iterator finalization" (in progress))
    --harmony_tailcalls (enable "harmony tail calls" (in progress))
    --harmony_object_values_entries (enable "harmony Object.values / Object.entries" (in progress))
    --harmony_object_own_property_descriptors (enable "harmony Object.getOwnPropertyDescriptors()" (in progress))
    --harmony_regexp_property (enable "harmony unicode regexp property classes" (in progress))
    --harmony_function_name (enable "harmony Function name inference")
    --harmony_regexp_lookbehind (enable "harmony regexp lookbehind")
    --harmony_species (enable "harmony Symbol.species")
    --harmony_instanceof (enable "harmony instanceof support")
    --harmony_default_parameters (enable "harmony default parameters")
    --harmony_destructuring_assignment (enable "harmony destructuring assignment")
    --harmony_destructuring_bind (enable "harmony destructuring bind")
    --harmony_tostring (enable "harmony toString")
    --harmony_regexps (enable "harmony regular expression extensions")
    --harmony_unicode_regexps (enable "harmony unicode regexps")
    --harmony_sloppy (enable "harmony features in sloppy mode")
    --harmony_sloppy_let (enable "harmony let in sloppy mode")
    --harmony_sloppy_function (enable "harmony sloppy function block scoping")
    --harmony_proxies (enable "harmony proxies")
    --harmony_reflect (enable "harmony Reflect API")
    --harmony_regexp_subclass (enable "harmony regexp subclassing")

    0 讨论(0)
  • 2020-11-29 02:56

    This should be a comment to @Paulpro's answer but I do not have enough rep to post a comment.

    For Windows users the equivalent command is:

    node --v8-options | findstr harmony
    
    0 讨论(0)
  • 2020-11-29 02:56

    Until modules are implemented you can use the Babel "transpiler" to run your code:

    npm install --save babel-cli babel-preset-node6
    ./node_modules/.bin/babel-node --presets node6 ./your_script.js
    

    See https://www.npmjs.com/package/babel-preset-node6 and https://babeljs.io/docs/usage/cli/

    Downsides: this has various downsides, such as extra compilation time, which can be significant and you now need source maps for debugging; just saying.

    0 讨论(0)
提交回复
热议问题