从 'fs' 使用 import fs

Using import fs from 'fs'

我想在 JavaScript 中使用 import fs from 'fs'。这是一个示例:

import fs from 'fs'

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

console.log(output)

当我 运行 我的文件使用 node main.js 时出现的错误是:

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

Node.js需要安装什么才能实现从其他地方导入模块和功能?

对于默认导出,您应该使用:

import * as fs from 'fs';

或者如果模块已命名导出:

import {fs} from 'fs';

示例:

//module1.js

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

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

export default function1;

然后:

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

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

此外,您应该使用 Webpack or something similar to be able to use ES6 import

ES6 modules support in Node.js 是相当新的;即使在最前沿的版本中,它仍处于试验阶段。使用 Node.js 10,您可以使用 --experimental-modules 标志启动 Node.js,它可能会起作用。

要导入旧 Node.js 版本 - 或标准 Node.js 10 - 使用 CommonJS 语法:

const fs = require('fs');

目前还不支持...如果您想使用它,您必须安装 Babel

要使用 import { readFileSync } from 'fs',您必须:

  1. 正在使用 Node.js 10 或更高版本
  2. 使用 --experimental-modules 标志(在 Node.js 10 中),例如node --experimental-modules server.mjs(有关 .mjs 的说明,请参阅#3)
  3. 使用 import 语句将文件的文件扩展名重命名为 .mjs.js 将不起作用,例如server.mjs

其他答案都命中了1和2,但是3也是必须的。另外,请注意,此功能目前被认为是非常实验性的(1/10 稳定性),不推荐用于生产,但我仍可能会使用它。

这是 Node.js 10 ESM documentation

新的 ECMAScript 模块支持在 Node.js 12

中原生可用

发布于2019-04-23,表示不需要使用flag --experimental-modules

阅读更多相关信息:

The new ECMAScript module support in Node.js 12

基于 RobertoNovelo 的回答:

import * as fs from 'fs';

是目前最简单的方法。

已使用 Node.js 项目(Node.js v10.15.3)进行测试,esm,允许使用 import

如果我们使用的是 TypeScript,我们可以在终端或命令提示符下通过 运行 命令 npm install @types/node 更新类型定义文件。

转到 package.json 文件并添加:

"type": "module"

这对我有用!

嘿朋友们 node js 使用 commonjs 而不是 modaljs 所以请使用 alawys const fs = require('fs') 对于文件系统,如果我们使用 modaljs import fs from 'fs' 它在 termile 中给出错误 se 从 'fs' 导入 {fs}; ^^^^^^ 语法错误:无法在模块外使用导入语句