Angular 7如何使用fs模块?

21

我正在使用Angular 7。

我尝试在TypeScript中使用fs模块来打开一个目录。 我一直遇到这个错误:“模块未找到:错误:无法解析fs” 已安装types@node和file-system。

我的代码:

import {Component, OnInit} from '@angular/core';
import * as fs from 'file-system';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit  {
  title = 'my-app';

  constructor() {

  }

  ngOnInit() {
    console.log(fs);
  }
}

你能帮助我吗?

Node:v10.14.0 Npm:v6.4.1 Angular CLI:v7.1.1


1
也许如果您发布您的代码,我们可以帮助您。 - Observablerxjs
13
Angular应用程序在浏览器中运行,而不是在服务器上的NodeJS中运行。浏览器无法访问文件系统,在那里也无法使用特定于NodeJS的模块。 - JB Nizet
我更新了我的问题。 我以为Angular可以调用Node.js函数 :/ - Eng
1
在编译阶段,您可以自由访问文件系统并涉及其他位置的文件。当应用程序被编译和/或构建后,您将无法再这样做。正如JB所说,客户端无法访问文件系统。 - Bjorn 'Bjeaurn' S
这个回答解决了你的问题吗?Node JS fs 模块在浏览器中的应用 - Heretic Monkey
3个回答

8

'fs'是NodeJS运行时的库,但Angular流水线打包器的最终产品是在浏览器中运行的前端SPA客户端。如果您需要从用户本地文件系统加载文件到客户端,则需要使用浏览器原生变体,例如处理<input type="file">元素。


4

fs模块在Angular中不可用。使用以下软件包来使用fs模块。

npm install file-system --save

示例:

var fs = require('file-system');
 
fs.mkdir('1/2/3/4/5', [mode], function(err) {});
fs.mkdirSync('1/2/3/4/5', [mode]);
fs.writeFile('path/test.txt', 'aaa', function(err) {})

参考https://www.npmjs.com/package/file-system


最后更新时间为7年前... - Ap0st0l

2

'fs' 模块是一个 Node.js 模块,它在 Angular(或任何其他框架)中不可用。发生的情况是 Angular 代码被转译和压缩,并在浏览器上下文中运行,而不是在 Node.js 上下文中运行。浏览器被沙箱化并且无法访问客户端文件系统。如果这是可能的话,那么网络将会更加危险 :)


2
很抱歉,这并不是真的。只要授权许可,您可以使用webpack允许文件流访问用户上传的文件。您可以手动构建此功能,或使用任何数量的模块包装器。 - Jamie Nicholl-Shelley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接