我在MacBook Air上运行。我安装了VS代码作为IDE,还安装了TypeScript。
我有一个简单的文件,只有这一行:
import fs = require('fs');
我在括号内的“fs”下看到一条红色的曲线,错误消息是[ts] Cannot find module 'fs'.
该文件的扩展名为.ts。我是JavaScript和TypeScript的新手,但我的印象是fs
是一个核心模块,所以怎么会找不到它呢?我该如何解决这个问题?
我已经尝试过的其他事情:
- 在文件中放入一个简单的函数体,然后在命令行上使用
tsc
进行编译,我得到了一个本质上等效的错误:error TS2307: Cannot find module 'fs'.
- 在命令行
sudo npm install fs -g
上。这报告了明显的成功,但没有修复问题。
我在SE和Web上四处打听,但看起来很接近的答案似乎都假设“fs”是可用的。
8条答案
按热度按时间vu8f3i0k1#
您需要包含节点的定义文件。
使用npm安装:
如果使用typings,则可以运行以下命令:
或者,如果您使用的是小于1.0的类型,请运行:
或者,如果所有其他方法都失败,则手动下载文件here并将其包含在项目中。
3okqufwl2#
现在有一个更好的方法,不用使用以前的tsd或typings工具,NPM现在有@types包用于typescript,在这个例子中,你需要
@types/node
包:确保你使用save-dev选项只在开发模式下安装类型,而不是在生产模式下。当使用npm install“@types/”语法时,你应该有最新的节点库...
它找不到fs包,因为以前的工具类型很可能没有使用最新的node.d.ts定义文件。
您的tsconfig.json文件需要更新以找到这些类型包。我的示例使用jquery、jqueryui和节点类型。假设您也需要语法来为您的代码编辑器工作,在本例中为“atom”代码编辑器
igsr9ssn3#
“fs”是一个核心节点模块,我认为您的import语句语法有点错误。
zynd9foi4#
您只需要在tsconfig.json中将“moduleResolution”设置为“node”:
执行
现在您可以使用标准TypeScript导入:
iszxjhcz5#
在
tsconfig.json
中有三个选项(此处为:节点11+),参见文档:指定
typeRoots
和types
,或仅指定typeRoots
,或完全删除两行(推荐):安装类型:
使用基于promise的文件系统(例如,使用async / await):
wbgh16ku6#
Typescript根据约定了解模块,请查看Module resolution以了解更多详细信息。
此外,IDE要了解
fs
模块,还必须提供节点的类型。还要检查此github issue
6rvt4ljy7#
在我这边这项工作
对于具有vitej的nwj
这将删除
any
mccptt678#
如果您的文件(脚本)位于以
.
开头的目录中,您也会得到此类错误:https://github.com/microsoft/TypeScript/issues/13399我有同样的问题(
Cannot find module 'fs' or its corresponding type declarations.
),虽然@types/node
已安装。我的脚本是在.husky
目录和添加:到
tsconfig.json
解决了这个问题。