ウェブサイト検索

node.js - 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

これをどう直せばいいですか?

回答 #1

私が最も好きな解決策:

import { promises as fs } from 'fs';

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

回答 #2

このエラーは、require文をサポートしていないサポートされていないNodeバージョン12.xが原因です...

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

しかし、これはうまくいく

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

これはNodeを最新に更新することで解決できます。

関連記事