2016-07-22 70 views
2

我正在使用Chrome 51和Angular 2.rc4,並在加載我的角度應用程序時在控制檯中彈出以下錯誤消息。Angular 2 TypeError:無法讀取null的屬性'animate'

TypeError: Cannot read property 'animate' of null 
at e.supportsWebAnimation (platform-browser.umd.js:2232) 
at st (platform-browser.umd.js:2896) 
at t._instantiate (core.umd.js:6370) 
at t._instantiateProvider (core.umd.js:6311) 
at t._new (core.umd.js:6300) 
at t.getObjByKeyId (core.umd.js:5954) 
at t._getByKeyDefault (core.umd.js:6480) 
at t._getByKey (core.umd.js:6452) 
at t._getByReflectiveDependency (core.umd.js:6442) 
at t._instantiate (core.umd.js:6342) 
at c (vendors.js:3) 
at vendors.js:3 
at t.invokeTask (vendors.js:3) 
at Object.onInvokeTask (core.umd.js:9091) 
at t.invokeTask (vendors.js:3) 
at t.runTask (vendors.js:3) 
at s (vendors.js:3) 
at XMLHttpRequest.invoke (vendors.js:3) 

如果我再次刷新它會消失,應用程序加載正常。當我深入挖掘它時,我發現以下有問題的代碼,其中body的文檔似乎爲null,文件platform-browser.umd.js

BrowserDomAdapter.prototype.supportsWebAnimation = function() { 
     return isFunction(document.body['animate']); 
}; 

我使用systemjs建設者對岸線的角度成分,就像這樣:

//Bundle auth module to a single script file 
gulp.task('bundle_auth', ['bundle_vendors'], function() { 
var builder_auth = new Builder('', 'assets/js/dependencies/config/auth.system.js'); 
return builder_auth 
    .buildStatic('assets/app/auth/main.js', 'assets/dist/js/auth/bundle.js', { minify: true, sourceMaps: true }) 
    .then(function() { 
     //console.log('Build complete for auth module'); 
    }) 
    .catch(function(err) { 
     console.log(err); 
    }); 
}); 

這裏是我的systemjs配置,如果需要的話:

(function(global) { 

// map tells the System loader where to look for things 
var map = { 
    'app' : 'assets/app/auth', 
    '@angular': 'node_modules/@angular', 
    'ng2-translate': 'node_modules/ng2-translate', 
    'rxjs': 'node_modules/rxjs', // added this map section 
    'primeng': 'node_modules/primeng', 
    'angular2-recaptcha': 'node_modules/angular2-recaptcha' 
}; 

// packages tells the System loader how to load when no filename and/or no extension 
var packages = { 
    'app': { main: 'assets/app/auth/main.js', defaultExtension: 'js'}, 
    'rxjs': { defaultExtension: 'js' }, 
    'primeng': {defaultExtension: 'js'}, 
    'angular2-recaptcha': {defaultExtension: 'js'} 
}; 

var packageNames = [ 
    'common', 
    'compiler', 
    'core', 
    'http', 
    'forms', 
    'platform-browser', 
    'platform-browser-dynamic', 
    'router' 
]; 

// Individual files (~300 requests): 
function packIndex(pkgName) { 
    packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' }; 
} 
// Bundled (~40 requests): 
function packUmd(pkgName) { 
    packages['@angular/'+pkgName] = { main: 'bundles/' + pkgName + '.umd.js', defaultExtension: 'js' }; 
} 

// Most environments should use UMD; some (Karma) need the individual index files 
var setPackageConfig = System.packageWithIndex ? packIndex : packUmd; 

// Add package entries for angular packages 
packageNames.forEach(setPackageConfig); 

var config = { 
    defaultJSExtensions: true, 
    map: map, 
    packages: packages 
}; 

System.config(config); 

})(this); 

此問題僅發生在鉻。

編輯

這裏是角引導文件:

import {bootstrap} from '@angular/platform-browser-dynamic'; 
import {AppComponent} from './component/app.component'; 
import {HTTP_PROVIDERS} from '@angular/http'; 
import {HttpService} from '../common/service/http.service'; 
import {enableProdMode} from '@angular/core'; 
import {disableDeprecatedForms, provideForms} from '@angular/forms'; 
import {APP_ROUTER_PROVIDERS} from '../routes/auth.routes'; 
import {TRANSLATE_PROVIDERS, TranslateService, TranslatePipe, TranslateLoader, TranslateStaticLoader} from 'ng2-translate/ng2-translate'; 

enableProdMode(); 
bootstrap(AppComponent,[ 
    APP_ROUTER_PROVIDERS, 
    HTTP_PROVIDERS, 
    TRANSLATE_PROVIDERS, 
    HttpService, 
    disableDeprecatedForms(), 
    provideForms() 
]).catch(err => console.error(err)); 
+0

你可以添加你的角度引導文件? – n00dl3

+0

@ n00dl3我已經添加了引導文件 – xmaestro

回答

4

我想你包括你捆綁的js文件中的index.html頭部分的內部,而是你應該轉移到那些在身體部分在你的應用程序下

爲了在將應用程序轉移到webpack之後更加清晰,我有完全相同的問題。

例如,

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <base href=""> 
 

 
    <title>Test</title> 
 
    <meta charset="UTF-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
 

 
    <script src="prod/vendor.js"></script> 
 
    <script src="prod/app.js"></script> 
 
</head> 
 

 
<body> 
 
    <app-one> 
 
     Loading... 
 
    </app-one> 
 
</body> 
 

 
</html>

我調到腳本這樣

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <base href=""> 
 

 
    <title>Test</title> 
 
    <meta charset="UTF-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
 
</head> 
 

 
<body> 
 
    <app-one> 
 
     Loading... 
 
    </app-one> 
 
    
 
    <script src="prod/vendor.js"></script> 
 
    <script src="prod/app.js"></script> 
 
</body> 
 

 
</html>

+0

同樣的問題在這裏,你的解決方案解決了這個問題,謝謝! –

相關問題