Подтвердить что ты не робот

Как найти модуль "fs" в MS Code с помощью TypeScript?

Я работаю на MacBook Air. Я установил MS Code в качестве IDE, а также установил TypeScript.

У меня есть простой файл с этой строкой:

import fs = require('fs');

Я получаю красный squiggly под "fs" внутри скобки и сообщение об ошибке [ts] Cannot find module 'fs'. В файле есть расширение .ts. Я новичок в JavaScript и TypeScript, но у меня создалось впечатление, что fs был основным модулем, так как его нельзя было найти? Как устранить проблему?

Другие вещи, которые я уже пробовал:

  • Помещение простого элемента функции в файл, а затем компиляция в командной строке с помощью tsc. Я получаю по существу эквивалентную ошибку: error TS2307: Cannot find module 'fs'.
  • В командной строке sudo npm install fs -g. Это говорит о очевидном успехе, но не устраняет проблему.

Я ткнул вокруг SE и в Интернете, но ответы, которые казались близкими, кажутся предположительными, что доступно "fs".

4b9b3361

Ответ 1

Вам нужно включить файл определения для node.

TypeScript 2.0 +

Установить с помощью npm:

npm install --save-dev @types/node

TypeScript < 2.0

Если вы используете typings, вы можете запустить эту команду:

typings install dt~node --global --save

Или, если вы используете типизацию < 1.0 run:

typings install node --ambient --save

Или, если все остальное не удается, вручную загрузите файл здесь и включите его в свой проект.

Ответ 2

Теперь есть лучший способ, не обращаясь к предыдущим инструментам tsd или typings. Теперь NPM имеет пакет @types для typescript. В этом примере вам понадобится пакет @types/node:

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

Убедитесь, что вы используете параметр save-dev, чтобы устанавливать типы только в режиме разработки, а не в процессе производства. У вас должны быть последние библиотеки node, когда вы используете синтаксис "@types/" npm install...

Это не находит пакет fs, потому что предыдущие инструменты, скорее всего, не используют последний файл определения node.d.ts.

Ваш файл tsconfig.json необходимо обновить, чтобы найти эти пакеты типов. Мой пример, если вы используете типы jquery, jqueryui и node. Предполагая, что вам нужен синтаксис для работы с вашим редактором кода, в этом случае редактор кода "атом"

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

Ответ 3

Все, что вам нужно, это "moduleResolution", установленный в "node" в вашем tsconfig.json:

{
  "compilerOptions": {
      ...
      "moduleResolution": "node"
      ...
  }
}

выполнить

npm install @types/node --save-dev

и теперь вы можете использовать стандартный TypeScript импорт:

import * as fs from "fs";

Ответ 4

"fs" является основным модулем Node, и я думаю, что синтаксис оператора импорта немного не работает. Попробуйте:

import * as fs from "fs";

Ответ 5

Typescript знает о модулях, основанных на соглашениях, более подробно рассмотрите "Разрешение модуля" .

Также для того, чтобы IDE узнала о модуле fs, вы должны предоставить типизацию для node.

Также проверьте эту проблему github