【问题标题】:fs/promises api in typescript not compiling in javascript correctly打字稿中的 fs/promises api 无法在 javascript 中正确编译
【发布时间】:2021-02-19 19:32:58
【问题描述】:

我最近在使用 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;

这是我的打字稿文件导入

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"]
}

节点版本12.18.0

是否有人面临同样的问题,或者我做错了什么?
请帮助
谢谢...

【问题讨论】:

  • 您使用哪个 Node.js 版本?如果我理解正确,fs/promises 模块从 v12 开始可用,在 v10 及更早版本中,它只是模块 fs 下的对象 promises
  • @Cerberus 感谢回复我正在使用节点版本 v12.18.4
  • 我有节点 v12.14.1 并且有同样的问题!!

标签: javascript node.js typescript fs


【解决方案1】:

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

【讨论】:

【解决方案2】:

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

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

但是这行得通

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

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

【讨论】:

  • 我用import {promises as fsp} from "fs"
  • 或者你也可以const { promises: fs } = require("fs")
【解决方案3】:

在节点 v12.18.1 中对我有用的是:

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

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

【讨论】:

    【解决方案4】:

    我最喜欢的解决方案:

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

    【讨论】:

    • 感谢@Javarome 在评论中的启发
    猜你喜欢
    • 2016-11-11
    • 2021-10-26
    • 1970-01-01
    • 2019-04-17
    • 2017-08-20
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 2016-08-16
    相关资源
    最近更新 更多