如何修复找不到模块“ fs”

时间:2019-06-04 06:30:56

标签: node.js angular typescript fs

当我尝试使用writeFile从fs导入angular时,然后我尝试运行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 个答案:

答案 0 :(得分:4)

您是否在指代NodeJS模块fs?如果是这样,则该模块仅在NodeJS运行时可用。

我假设您正在为网络编译Angular应用程序。如果是这样,请记住,浏览器没有fs或任何其他Node模块;与Node没有fetchwindow对象或API的方式相同。

作为应用程序捆绑过程的一部分,Angular编译器无法将fs解析为引用的程序包或已知的Web API,从而导致出现您看到的消息。

如果您需要类似客户端的文件功能,请考虑使用类似的Web API,例如localStorage

  

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

如果需要对磁盘和文件系统的低级访问,则需要一些“后端”运行时/ SDK /语言,例如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 :(得分:1)

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