升级Angular项目

时间:2017-01-23 20:25:22

标签: angular systemjs

我将Angular项目从Angular 2 rc4升级到当前版本,即2.4.4。我已经在另一个内部项目中完成了这项工作,但是我在这样做时遇到了一些奇怪的错误。

我已经升级了所有角度包,以及typescript,zone.js,rxjs和新的@types模块。我的systemjs.config.js文件如下所示:

var System;
(function(global) {
    const paths = {
        'deps:': 'js/dependencies/'
    };
    // map tells the System loader where to look for things
    var map = {
        'app':                                  'js/app', // 'dist',
        'rxjs':                                 'deps:rxjs',
        'ng2-bootstrap':                        'js/dependencies/ng2-bootstrap',
        'ng2-file-upload':                      'deps:ng2-file-upload',
        'moment':                               'deps:moment',
        'lodash':                               'deps:lodash',
        'symbol-observable':                    'deps:symbol-observable',
        '@angular/core':                        'deps:@angular/core/bundles/core.umd.js',
        '@angular/common':                      'deps:@angular/common/bundles/common.umd.js',
        '@angular/compiler':                    'deps:@angular/compiler/bundles/compiler.umd.js',
        '@angular/platform-browser':            'deps:@angular/platform-browser/bundles/platform-browser.umd.js',
        '@angular/platform-browser-dynamic':    'deps:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
        '@angular/http':                        'deps:@angular/http/bundles/http.umd.js',
        '@angular/router':                      'deps:@angular/router/bundles/router.umd.js',
        '@angular/forms':                       'deps:@angular/forms/bundles/forms.umd.js',
    };

    // packages tells the System loader how to load when no filename and/or no extension
    var packages = {
        'app':                        { main: 'main.js',  defaultExtension: 'js' },
        'rxjs':                       { defaultExtension: 'js' },
        'moment':                     { main: 'moment.js', defaultExtension: 'js' },
        'lodash':                     { main: 'index.js', defaultExtension: 'js' },
        'ng2-bootstrap':              { format: 'cjs', main: 'bundles/ng2-bootstrap.umd.js', defaultExtension: 'js' },
        'ng2-file-upload':            { main: 'ng2-file-upload.js', defaultExtension: 'js' }
    };

    var config = {
        paths: paths,
        map: map,
        packages: packages
    };

    System.config(config);

})(this);

这与我们拥有的其他Angular项目完全相同(并且它在那里工作)。

当我构建项目并加载它时,我在浏览器控制台中收到以下错误:

[path]/@angular/router/bundles/router.umd.js/src/url_tree 404 (Not Found)
ZoneAwareError
    Error: Error: XHR error (404 Not Found) loading [path]/@angular/router/bundles/router.umd.js/src/url_tree

我尝试过其他systemjs.config.js格式,例如this one,但我仍然遇到错误。那个略有不同; 404在traceur

我只是不确定错误来自何处或如何解决。如果有人对去哪儿有任何想法或指示,我会非常感激!

1 个答案:

答案 0 :(得分:0)

所以我想出了在这个特殊情况下我的错误来自哪里。我不能说这总是问题,但这对我来说是个问题。

我有一个检查当前路线的功能,然后隐藏或显示菜单组件。该代码已过期,需要更新,但因为我还没有更新,但它失败了,而且404来自哪里。

违规导入是:

import { containsTree } from '@angular/router/src/url_tree';

我评论说,错误消失了。所以现在我可以继续并更新该代码。