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

时间:2018-05-13 07:26:40

标签: 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)

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

我遵循本教程here

我的确切代码可以找到here

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

5 个答案:

答案 0 :(得分:9)

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

(window as any).global = window;
global.Buffer = global.Buffer || require('buffer').Buffer;
global.process = require('process');

答案 1 :(得分:6)

polyfill.ts中,添加以下行:

(window as any).process = {
  env: { DEBUG: undefined },
};

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


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

import * as process from 'process';
window['process'] = process;

答案 2 :(得分:4)

这与Angular v6不兼容。他们process(垫片)浏览器中的global和{{1}}变量。

我建议您使用Angular 5,直到removed support修复错误。也许你甚至可以为它开一个问题。

答案 3 :(得分:2)

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

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

<script>
  var global = global || window;
  var Buffer = Buffer || [];
  var process = process || {
    env: { DEBUG: undefined },
    version: []
  };
</script>

答案 4 :(得分:1)

只要您对在polyfills.ts中添加一些随机逻辑并在Angular应用程序中寻找实际访问process.env的方式不满意,请在下面找到解决方案。

"builder": "@angular-devkit/build-angular:dev-server"中的"builder": "@angular-builders/custom-webpack:dev-server"更改为angular.json