如何使用TypeScript在VS Code中找到模块“fs”?

2022-08-30 05:20:35

我在MacBook Air上运行。我安装了VS Code作为IDE,并且还安装了TypeScript。

我有一个简单的文件,只有这行:

import fs = require('fs');

我在括号内的“fs”下得到一个红色波浪线,错误消息是该文件具有.ts扩展名。我是JavaScript和TypeScript的新手,但我的印象是它是一个核心模块,所以怎么找不到它呢?如何解决此问题?[ts] Cannot find module 'fs'.fs

我已经尝试过的其他事情:

  • 将一个简单的函数体放在文件中,然后在命令行上使用 进行编译。我在那里得到了一个本质上等效的错误:tscerror TS2307: Cannot find module 'fs'.
  • 在命令行上。这报告了明显的成功,但不能解决问题。sudo npm install fs -g

我浏览了SE和网络,但似乎很接近的答案似乎都假设“fs”可用。


答案 1

您需要包含节点的定义文件。

TypeScript 2.0+

使用 npm 安装:

npm install --save-dev @types/node

TypeScript < 2.0

如果使用键入,则可以运行以下命令:

typings install dt~node --global --save

或者,如果您在 1.0 运行<使用键入:

typings install node --ambient --save

或者,如果所有其他方法都失败,请在此处手动下载文件并将其包含在项目中。


答案 2

现在有更好的方法,无需转到以前的tsd或键入工具。NPM 现在具有用于 typescript 的@types包。在此示例中,您需要以下包:@types/node

npm install "@types/node" --save-dev

确保使用 save-dev 选项仅在开发模式下安装类型,而不是在生产环境中安装类型。使用 npm 安装“@types/”语法时,您应该具有最新的节点库...

它找不到 fs 包,因为以前的工具键入很可能不使用最新的 node.d.ts 定义文件。

需要更新 tsconfig.json 文件才能找到这些类型包。我的例子如果使用jquery,jqueryui和节点类型。假设您也需要语法来为您的代码编辑器工作,在这种情况下,“atom”代码编辑器

{
"compileOnSave": false,
"compilerOptions": {
    "rootDir": "src",
    "sourceMap": true,
    "target": "es5",
    "module": "amd",
    "declaration": false,
    "noImplicitAny": false,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "moduleResolution": "node",
    "lib": ["es2015", "dom"],
    "baseUrl": "./",
    "typeRoots": [
        "node_modules/@types"
    ],
    "types": [
        "jquery",
        "jqueryui",
        "node"
    ],
    "paths": {
        "src/*": ["src/*"]
    }
},
"exclude": [
    "node_modules",
    "dist",
    "build"
],
"filesGlob": [
    "./src/**/*.ts",
    "./test/**/*.ts",
    "./typings/index.d.ts",
    "./custom_typings/**/*.d.ts",
    "./node_modules/@types/**/*.d.ts"
],
"atom": {
    "rewriteTsconfig": false
}
}