Как исправить не могу найти модуль 'fs' - PullRequest
1 голос
/ 04 июня 2019

Когда я пытаюсь использовать writeFile angular, импортирует его из fs, тогда я пытаюсь запустить ng serve, и я получаю ERROR in src/app/app.component.ts(2,27): error TS2307: Cannot find module 'fs'.

Я предполагаю, что мне не хватает простого параметра где-то, например, когда вы хотите использовать ng-model, вам нужно импортировать formsModule в app.modules.ts.

Я использую:

vscode: 1.34

Angular CLI: 8.0.1
Node: 10.15.3
OS: win32 x64
Angular: 8.0.0
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.800.1
@angular-devkit/build-angular     0.800.1
@angular-devkit/build-optimizer   0.800.1
@angular-devkit/build-webpack     0.800.1
@angular-devkit/core              8.0.1
@angular-devkit/schematics        8.0.1
@angular/cli                      8.0.1
@ngtools/webpack                  8.0.1
@schematics/angular               8.0.1
@schematics/update                0.800.1
rxjs                              6.4.0
typescript                        3.4.5
webpack                           4.30.0

Мой tsconfig выглядит так:

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "module": "esnext",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "importHelpers": true,
    "target": "es2015",
    "typeRoots": ["node_modules/@types"],
    "lib": ["es2018", "dom"],
    "types": ["node"]
  }
}

Ответы [ 2 ]

4 голосов
/ 04 июня 2019

Вы имеете в виду модуль NodeJS fs? Если это так, то этот модуль доступен только во время выполнения NodeJS.

Я полагаю, вы компилируете приложение Angular для Интернета. Если это так, то имейте в виду, что в браузерах нет fs и других модулей Node; так же, как Node не имеет fetch или window объекта или API.

Как часть процесса связывания для вашего приложения, компилятор Angular не может разрешить fs в ссылочный пакет или известный веб-API, что приводит к сообщению, которое вы видите.

Если вам нужны файловые возможности на стороне клиента, рассмотрите возможность использования аналогичного веб-API, такого как localStorage.

https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

Если вам нужен низкоуровневый доступ к диску и файловой системе, то вам нужен какой-то "back-end" runtime / SDK / language, такой как NodeJS, Python и т. Д.

Вы можете обрабатывать файлы в Javascript на стороне клиента. Вам просто нужно работать в рамках того, что позволяет браузер. Например, вы можете получить доступ к содержимому файла, используя тег <input type="file">, а затем обработав объект FileList.

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file

Аналогично, вы можете инициировать «загрузку» на стороне клиента, чтобы позволить пользователю сохранить файл.

https://npmjs.com/package/file-saver

1 голос
/ 04 июня 2019
fs is only available in NodeJs runtime. If you want to read and write to a file locally using Angular please refer to 

https://github.com/NativeScript/NativeScript/issues/4465#issuecomment-311618840

...