如何在Angular 6+;中实现systemjs;?

如何在Angular 6+;中实现systemjs;?,angular,angular6,systemjs,Angular,Angular6,Systemjs,我正在尝试学习如何使插件在Angular中工作,但是在添加systemjs后,我遇到以下错误: 未捕获引用错误:未定义SystemJS 我实现了systemjs,如下所示: import { System } from 'systemjs'; declare const SystemJS: System; import * as angularCore from '@angular/core'; import * as angularCommon from '@angular/common';

我正在尝试学习如何使插件在Angular中工作,但是在添加systemjs后,我遇到以下错误:

未捕获引用错误:未定义SystemJS

我实现了systemjs,如下所示:

import { System } from 'systemjs';
declare const SystemJS: System;

import * as angularCore from '@angular/core';
import * as angularCommon from '@angular/common';
import * as angularCommonHttp from '@angular/common/http';
import * as angularForms from '@angular/forms';
import * as angularAnimations from '@angular/animations';
import * as angularPlatformBrowser from '@angular/platform-browser';
import * as angularPlatformBrowserDynamic from '@angular/platform-browser-dynamic';

//error thrown here
SystemJS.set('@angular/core', SystemJS.newModule(angularCore));
SystemJS.set('@angular/common', SystemJS.newModule(angularCommon));
SystemJS.set('@angular/common/http', SystemJS.newModule(angularCommonHttp));
SystemJS.set('@angular/forms', SystemJS.newModule(angularForms));
SystemJS.set('@angular/animations', SystemJS.newModule(angularAnimations));
SystemJS.set('@angular/platform-browser', SystemJS.newModule(angularPlatformBrowser));
SystemJS.set('@angular/platform-browser-dynamic', SystemJS.newModule(angularPlatformBrowserDynamic));

SystemJS.config({ meta: { '*': { authorization: true } } });
我错过了什么

我使用systemjs的代码:

我的提交与尝试的修复:

我以回购协议为例:

  • 通过
    包.json安装SystemJS(可能需要根据需要安装旧版本)

  • 将SystemJS Javascript文件的路径添加到
    angular.json
    中的脚本中。通过这种方式将其加载到全局空间:

  • 在文件中声明并使用它
  • 第二步是你遗漏了什么(我猜),以及为什么它在你链接的回购协议中起作用;方法相同:


    您的代码所做的并不是实际导入SystemJS模块本身,而是导入类型声明,该声明在运行时被剥离。这就是为什么需要将SystemJS添加到
    脚本
    -部分

    尝试在
    /src/polyfill.ts
    文件中导入SystemJS。我们在Angular的早期版本中导入SystemJS,但最新版本在一些Angular模块中有SystemJS。@AbdulSamiHaroon我试图像这样添加到polyfill
    导入“SystemJS”
    导入“../node_modules/systemjs”,但我得到以下错误“未找到模块:错误:无法解析[…]中的'systemjs'。还要做什么才能将其添加到polyfill?//将全局添加到窗口,并为窗口本身赋值<代码>(任意窗口)。全局=窗口我在我的一个项目中添加了此选项以解决此错误。我不知道,但请尝试将其添加到你的polyfill.ts.@AbdulSamiHaroon底部。我认为我做错了,它仍然不起作用。你能看看吗?我确实添加了第二步,结果证明我需要0.21.5版,在这次提交中它可以工作:看起来“newModule”已被弃用并从systemjs中删除。知道最新版本中的替代品是什么吗?
    
    "scripts": [
      "node_modules/systemjs/dist/system.min.js"
    ]
    
    ...
    declare const SystemJS: System;
    ...
    SystemJS.set('@angular/core', SystemJS.newModule(angularCore));