Javascript 离子4.8中未定义全局、缓冲区和过程
我试图在Angular 8-4应用程序中使用外部js npm库,我收到了Javascript 离子4.8中未定义全局、缓冲区和过程,javascript,typescript,ionic4,angular8,Javascript,Typescript,Ionic4,Angular8,我试图在Angular 8-4应用程序中使用外部js npm库,我收到了 ERROR Error: Uncaught (in promise): ReferenceError: global is not defined 我试图通过在polyfill.ts中插入以下代码来解决此问题: (window as any).global = window; import * as buffer from 'buffer'; window['buffer'] = buffer; import *
ERROR Error: Uncaught (in promise): ReferenceError: global is not defined
我试图通过在polyfill.ts中插入以下代码来解决此问题:
(window as any).global = window;
import * as buffer from 'buffer';
window['buffer'] = buffer;
import * as process from 'process';
window['process'] = process;
当我尝试使用“ionic serve”运行ionic应用程序时,我收到一个运行时错误:
index.js:43 Uncaught ReferenceError: global is not defined
at Object../node_modules/node-libs-browser/node_modules/buffer/index.js (index.js:43)
at __webpack_require__ (bootstrap:84)
at Module../src/polyfills.ts (polyfills.ts:1)
at __webpack_require__ (bootstrap:84)
at Object.1 (zone-flags.ts:5)
at __webpack_require__ (bootstrap:84)
at checkDeferredModules (bootstrap:45)
at Array.webpackJsonpCallback [as push] (bootstrap:32)
at polyfills.js:1
...
ERROR Error: Uncaught (in promise): ReferenceError: global is not defined
ReferenceError: global is not defined
at Object../node_modules/stream-http/lib/capability.js (capability.js:1)
at __webpack_require__ (bootstrap:84)
at Object../node_modules/stream-http/lib/request.js (request.js:1)
at __webpack_require__ (bootstrap:84)
at Object../node_modules/stream-http/index.js (index.js:1)
at __webpack_require__ (bootstrap:84)
at Object../node_modules/rss-parser/lib/parser.js (parser.js:2)
at __webpack_require__ (bootstrap:84)
at Object../node_modules/rss-parser/index.js (index.js:3)
at __webpack_require__ (bootstrap:84)
at resolvePromise (zone-evergreen.js:797)
at resolvePromise (zone-evergreen.js:754)
at zone-evergreen.js:858
at ZoneDelegate.invokeTask (zone-evergreen.js:391)
at Object.onInvokeTask (core.js:34182)
at ZoneDelegate.invokeTask (zone-evergreen.js:390)
at Zone.runTask (zone-evergreen.js:168)
at drainMicroTaskQueue (zone-evergreen.js:559)
有什么建议吗?原始答案 Angular是客户端的框架。运行时目标是浏览器。您不能在那里使用像
process
这样的库,因为这些库仅在运行nodejs进程时可用
您很可能希望将应用程序分为客户端和服务器端
rss解析器解决方案
正如您在评论中提到的,所讨论的库是rss解析器
。如上所述,rss解析器
在使用绑定器时当前无法正确使用angular。很可能是因为
解决方案是使用库附带的预绑定版本。为此,将预先打包的版本添加到angular.json
中,并添加到architects
构建
部分的脚本
数组中RSSReader
现在在您的窗口中的对象中全局可用,可以如下使用:
从'@angular/core'导入{Component};
//这告诉TypeScript,您知道这将在运行时全局可用。
//不幸的是,RSSParser没有TS声明,所以您必须自己使用任何类型或创建更具体的类型
声明常数:任何;
@组成部分({
选择器:“我的应用程序”,
templateUrl:“./app.component.html”,
样式URL:['./app.component.css']
})
导出类AppComponent{
标题:字符串=“”;
项目:数组。原始答案
Angular是客户端的框架。运行时目标是浏览器。您不能在那里使用process
之类的库,因为这些库仅在运行nodejs进程时可用
您很可能希望将应用程序分为客户端和服务器端
rss解析器解决方案
正如您在评论中提到的,所讨论的库是rss parser
。如前所述,rss parser
在使用绑定器时当前无法正确使用angular。很可能是由于
解决方案是使用库附带的预打包版本。为此,请将预打包版本添加到angular.json
,添加到architects
build
部分的脚本
数组中。RSSReader
现在在窗口中全局可用,并且可以e是这样使用的:
从'@angular/core'导入{Component};
//这告诉TypeScript,您知道这将在运行时全局可用。
//不幸的是,RSSParser没有TS声明,所以您必须自己使用任何类型或创建更具体的类型
声明常数:任何;
@组成部分({
选择器:“我的应用程序”,
templateUrl:“./app.component.html”,
样式URL:['./app.component.css']
})
导出类AppComponent{
标题:字符串=“”;
项:数组。我需要使用的库是rss解析器,我需要定义缓冲区,因为缓冲区也未定义。@Alessandra用一个工作示例和一个解释更新了我的答案。我需要使用的库是rss解析器,我需要定义缓冲区,因为缓冲区也未定义。@Alessandra用一个工作示例和一个解释更新了我的答案国家。