Using import fs from 'fs'

2019-03-17 13:47发布

I want to use import fs from 'fs' in JavaScript. Here is a sample:

import fs from 'fs'

var output = fs.readFileSync('someData.txt')

console.log(output)

The error I get when I run my file using node main.js is:

(function (exports, require, module, __filename, __dirname) { import fs from 'fs
'
                                                              ^^^^^^
SyntaxError: Unexpected token import

What should I install in node in order to achieve importing modules and functions from other places?

4条回答
Fickle 薄情
2楼-- · 2019-03-17 14:23

ES6 modules support in node.js is fairly recent; even in the bleeding-edge versions, it is still experimental. With node 10, you can start node with the --experimental-modules flag, and it will likely work.

To import on older node versions - or standard node 10 - use CommonJS syntax:

const fs = require('fs');
查看更多
一夜七次
3楼-- · 2019-03-17 14:26

It's not supported just yet.... If you want to use you will have to install babel

https://babeljs.io/docs/setup/

查看更多
SAY GOODBYE
4楼-- · 2019-03-17 14:27

For default exports you should use:

import * as fs from 'fs';

Or in case the module has named exports:

import {fs} from 'fs';

Example:

//module1.js

export function function1() {
  console.log('f1')
}

export function function2() {
  console.log('f2')
}

export default function1;

And then:

import defaultExport, { function1, function2 } from './module1'

defaultExport();  // This calls function1
function1();
function2();

Additionally, you should use webpack or something similar to be able to use es6 import

查看更多
够拽才男人
5楼-- · 2019-03-17 14:28

In order to use import { readFileSync } from 'fs', you'll have to do the following:

  1. Be using node 10+
  2. Use the --experimental-modules flag (in node 10), e.g. node --experimental-modules server.mjs (see #3 for explanation of .mjs)
  3. Rename the file extension of your file with the import statements, to .mjs, .js will not work, e.g. server.mjs

The other answers hit on 1 and 2, but 3 is also necessary. Also note that this feature is considered extremely experimental at this point (1/10 stability) and not recommended for production... but I will still probably use it in prod :D

Here's the node 10 esm documentation, please like and accept my answer as it's the only correct one :D:D

查看更多
登录 后发表回答