TypeScript 中的 fs/promises API 在 JavaScript 中无法正确编译

我最近正在使用 TypeScript 和 fs/promises API,并在编译和运行 TypeScript 代码时收到此错误。我收到这个错误说:


internal/modules/cjs/loader.js:968

  throw err;

  ^


Error: Cannot find module 'fs/promises'

当我查看编译的代码时,这就是我发现的......


var promises_1 = require("fs/promises");

通过将其更改为开始工作


var promises_1 = require("fs").promises;

这是我的TypeScript 文件导入:


import { readFile, writeFile, appendFile } from "fs/promises";

我的package.json文件:


 "devDependencies": {

    "@types/cheerio": "^0.22.22",

    "@types/got": "^9.6.11",

    "@types/node": "^14.14.6"

  },

  "dependencies": {

    "cheerio": "^1.0.0-rc.3",

    "got": "^11.8.0"

  }

我的tsconfig.json文件:


{

  "compilerOptions": {

    "target": "es5",

    "module": "commonjs",

    "strict": true,

    "outDir": "dist",

    "sourceMap": true

  },

  "include": ["src/**/*"],

  "exclude": ["node_modules", "**/*.spec.ts"]

}

Node.js 版本:12.18.0


我怎样才能解决这个问题?


泛舟湖上清波郎朗
浏览 232回答 5
5回答

蓝山帝景

该错误是由于不受支持的 Node 版本 12.x 造成的,该版本不支持此 require 语句...var promises_1 = require("fs/promises");但这有效var promises_1 = require("fs").promises;可以通过将 Node 更新到最新来解决这个问题。

一只甜甜圈

我最喜欢的解决方案:import { promises as fs } from 'fs';async function main() {  await fs.writeFile('test.txt', 'hello');}

catspeake

在 Node v12.18.1 中对我有用的是:import { promises } from "fs";const { readFile, writeFile } = promises;我可以在 NestJS/express 上下文中使用这两种方法。

慕容3067478

fs/promises根据文档,在 Node.js 的使用版本中,还没有专用模块。但是,应该可以将 Node.js 升级到最新的 12.x,以便可以访问该模块。

隔江千里

要导入特定方法,您可以使用 - 例如: copyFile、rename:import { copyFile, rename } from 'node:fs/promises';
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript