TypeScript无法找到模块"fs",尽管已安装@types/node。

12

我知道通常解决这个问题的方法是安装 @types/node,并且我已经安装了 10.12.23 版本。

这似乎是一个奇怪的错误,让我有点困惑。我还安装了另外两个 npm 模块:config(需要 @types/config)和 firebase-admin(必须有自己的 TypeScript 类型)。同时使用的是 VS Code 版本 1.31 。我甚至尝试安装了一个旧版本的@types/node。

以下代码正常运行:

import admin from "firebase-admin";
import fs from "fs";

以下内容失败:找不到模块'fs'

import admin from "config";
import fs from "fs";

以下内容失败:无法找到模块“fs”。

import fs from "fs";

我没有使用任何其他的包/webpack或其他任何东西。欢迎任何想法。


哎呀,你是说 import fs from "fs"; 可以工作;然后你又说 import fs from "fs"; 返回“找不到模块 'fs'”错误? 问题:究竟是哪一个?问题:失败和成功的情况有何不同?FYI,“fs”是一个“NodeJS核心模块”,它应该始终可用。 - paulsm4
你能否尝试使用 import * as fs from "fs"; 并查看是否能对你有所帮助?另外,你的 TypeScript 配置中的 moduleResolution 设置是什么呢? - Alexander Staroselsky
1
另一个建议:在您的项目文件夹中清除 node_modules 目录,然后运行 npm install。并且一定要停止并重新启动 VSCode。 - paulsm4
哦...看起来有一些问题。重启了,运行npm install,结果出现了PERM:操作不允许,无法打开'D:....\node_modules@types\node\npm-shrinkwrap.json'。 - Martin Thompson
1
啊,谢谢。在VS Code中,node_modules目录显示为空..但实际上并不是空的。清空了一切,现在正常工作。感谢@paulsm4。 - Martin Thompson
显示剩余3条评论
2个回答

4
除了安装 @types/node,请确保以下内容在 tsconfig.json 中已设置:
  • 编译选项 types 不存在或包含 "node"
  • noResolve 不存在或被设置为 false
  • esModuleInterop 被设置为 true,否则会出现错误 Module "fs" has no default export

-4
在你的 ts/js 文件中导入 fs。
import fs from 'fs'

2
OP已经说过,你所建议的“解决方案”对他来说是失败的。 - S. Saad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接