在尝试提供应用程序时未定义Angular 6 - 进程

Dan*_*ram 11 javascript angular angular6

当我尝试使用cosmicjs提供角度6应用程序时,我收到以下错误:

Uncaught ReferenceError: process is not defined
    at Object../node_modules/cosmicjs/dist/index.js (index.js:6)
    at __webpack_require__ (bootstrap:81)
    at Object../src/app/app.component.ts (main.js:94)
    at __webpack_require__ (bootstrap:81)
    at Object../src/app/app.module.ts (app.component.ts:9)
    at __webpack_require__ (bootstrap:81)
    at Object../src/main.ts (environment.ts:18)
    at __webpack_require__ (bootstrap:81)
    at Object.0 (main.ts:12)
    at __webpack_require__ (bootstrap:81)
Run Code Online (Sandbox Code Playgroud)

我的最新理论与process.env属性未定义有关.

我在这里关注本教程

我的确切代码可以在这里找到

该教程似乎使用了使用.angular-cli.json而不是新的angular.json的旧版本的angular,我认为这是尝试指定环境变量的问题的一部分.

A T*_*A T 21

polyfill.ts,添加此行:

(window as any).process = {
  env: { DEBUG: undefined },
};
Run Code Online (Sandbox Code Playgroud)

参考:https://github.com/algolia/algoliasearch-client-javascript/issues/691


或者npm i -S process,然后将其添加到polyfill.ts:

import * as process from 'process';
window['process'] = process;
Run Code Online (Sandbox Code Playgroud)

  • 为什么我的应用程序会随机需要这个? (7认同)

bus*_*r95 16

为了解决这个问题,我在“polyfills.ts”文件中添加了以下几行,

(window as any).global = window;
global.Buffer = global.Buffer || require('buffer').Buffer;
global.process = require('process');
Run Code Online (Sandbox Code Playgroud)


小智 7

这与 Angular 6 不兼容。他们在浏览器中删除了对进程和全局变量的支持(垫片)。

在关闭 index.html 之前添加以下内容将消除错误。

<script>
  var global = global || window;
  var Buffer = Buffer || [];
  var process = process || {
    env: { DEBUG: undefined },
    version: []
  };
</script>
Run Code Online (Sandbox Code Playgroud)


Dan*_*cht 6

这与Angular v6不兼容。他们删除了浏览器中对processglobal变量的支持(填充)。

我建议您使用Angular 5,直到cosmic.js修复错误为止。也许您甚至可以为此开一个问题。