【问题标题】:How to use nodejs modules inside angular 8?如何在 Angular 8 中使用 nodejs 模块?
【发布时间】:2020-01-02 15:07:36
【问题描述】:

我不能在我的 Angular 8 应用程序中使用 nodeJS 全局模块。例如“fs”模块。我想通过使用 nodeJS 'fs' 模块执行 writeFile 和 readFile 操作。我尝试了很多方法,但无法在我的 Angular 8 应用程序中访问这些模块。请帮助我...

【问题讨论】:

  • 分享你试过的代码。
  • Angular 在浏览器中运行,而不是在服务器上。因此无法访问文件系统。

标签: node.js angular typescript


【解决方案1】:

首先你不能在 Angular 中使用 nodejs 库,因为它是在客户端浏览器上工作而不是在服务器中。很少有为 nodejs 编写的第三方 NPM 包可以在 Angular 中使用(例如:auth2,jwt)但是你需要在 Angular 中添加类型。

所以请确保您没有使用 Angular 访问节点包的系统,因为 Angular 只能在浏览器中进行控制。

【讨论】:

  • 您能否详细说明,如何在 Angular 应用程序中添加类型?因为我尝试并安装了“@types/node”,但仍然无法正确配置它。所以,请帮帮我。
  • 对于每个 npm 包,作者将自己创建类型,您可以通过 NPM 命令下载它,但问题是只有少数 javascript npm 库具有这些类型。
【解决方案2】:

如果你是用 Angular 开发 Electron 应用,必须做一些工作来访问 node api。

  1. 安装ngx-electron 并导入NgxElectronModule(按照自述文件中的Installation)。

  2. 在需要调用node api的地方注入ElectronService。

  3. 通过this._electronService.remote.require(string)导入你需要的包。

这是一个通过节点 api 获取D:\ 中文件列表的示例。

const fs = this.electronService.remote.require('fs');
console.log(fs.readdirSync('D:\\'));

【讨论】:

  • 抱歉,我没有使用电子应用程序开发 Angular。我正在开发一个 Web 应用程序,我想在我的 Angular Web 应用程序中访问节点 API。
  • @munishK 这是不可能的,因为网络浏览器从不允许网站访问节点 api
  • 那么如何在 Angular 应用程序中访问“fs”?因为我想将文件从网络应用程序写入我的系统。还有其他方法可以实现吗?
  • 这不是一个网站可以做的事情,这是正确的。有关两个 JavaScript 运行时(节点/Chromium)有何不同的详细信息,请参阅此答案:stackoverflow.com/questions/23959868/…
  • 你可以做的是触发文件下载。在 Angular 中这很简单:stackoverflow.com/questions/35138424/…
猜你喜欢
  • 1970-01-01
  • 2013-02-08
  • 2017-10-27
  • 2017-09-02
  • 2020-01-11
  • 1970-01-01
  • 2016-03-23
  • 2022-10-05
  • 2012-02-20
相关资源
最近更新 更多