NodeJS TypeScript中的fs/promises API在JavaScript中未正确编译

lrpiutwd  于 2023-06-22  发布在  Node.js
关注(0)|答案(5)|浏览(145)

我最近在使用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
我该怎么解决这个问题?

s1ag04yj

s1ag04yj1#

该错误是由于不受支持的Node版本12.x不支持此require语句...

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

但这个管用

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

这可以通过将节点更新到最新版本来解决。

8wtpewkr

8wtpewkr2#

我最喜欢的解决方案:

import { promises as fs } from 'fs';

async function main() {
  await fs.writeFile('test.txt', 'hello');
}
db2dz4w8

db2dz4w83#

在node v12.18.1中对我有效的是:

import { promises } from "fs";
const { readFile, writeFile } = promises;

我可以在nestJS/express上下文中使用这两种方法。

uqzxnwby

uqzxnwby4#

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

p8ekf7hl

p8ekf7hl5#

要导入特定方法,您可以使用-例如:copyFile,rename

import { copyFile, rename } from 'node:fs/promises';

相关问题