"TypeError: Невозможно прочитать свойство 'getLocation' с нулевым значением" при запуске проекта angular2-meteor

В последнее время я играл с angular2-meteor с машинописью и уже создал несколько проектов.

проблема, с которой я столкнулся раньше, и для ее устранения я удалил и переустановил node_modules и meteor для решения этой проблемы.

так как проблема возникла снова, я публикую этот вопрос вместо того, чтобы переустанавливать все, чтобы посмотреть, может ли кто-нибудь дать мне некоторое представление об этой ошибке.

В общем, я создал angular2-метеорный проект, как описано на http://www.angular-meteor.com/tutorials/socially/angular2/bootstrapping

на данный момент приложение очень простое.

У меня есть главный app.ts в каталоге клиента со следующим кодом:

import 'reflect-metadata';
import 'zone.js/dist/zone';
import {Component,provide} from '@angular/core';
import {APP_BASE_HREF} from '@angular/common';
import {bootstrap} from 'angular2-meteor-auto-bootstrap';
import {ROUTER_PROVIDERS, ROUTER_DIRECTIVES, Routes} from '@angular/router';

import {MdToolbar} from '@angular2-material/toolbar';

import {Welcome} from './imports/pages/welcome/welcome';
import {Statistics} from './imports/pages/statistics/statistics';


@Component({
   selector: 'app',
   templateUrl: 'client/app.html',
   directives: [ROUTER_DIRECTIVES,MdToolbar],
   providers: [ROUTER_PROVIDERS,provide(APP_BASE_HREF, { useValue: '/' })]
})
@Routes([
 { path: '/', component: Welcome },
 {path: '/statistics',component:Statistics}  
])
class BingoDriveStatisticsApp {

}

bootstrap(BingoDriveStatisticsApp);

как видите, у меня есть два компонента представления: "Добро пожаловать" и "Статистика". Я также использую angular2-материал для панели инструментов на данный момент.

Компоненты представления в значительной степени содержат templateUrl, который указывает на пустой HTML-файл.

пример: welcome.ts

import {Component} from '@angular/core';

@Component({
 templateUrl: '/imports/pages/welcome/welcome.html'
})
export class Welcome {

}

мой основной файл index.html в каталоге клиента содержит:

<body><app></app></body>

и app.html содержит:

<md-toolbar [color]="primary">
    <span>BingoDrive Statistics</span>&nbsp;
    <a [routerLink]="['/']">Welcome</a>
    <a [routerLink]="['/statistics']">Statistics</a>
</md-toolbar>
<router-outlet></router-outlet>

опять же... я не думаю, что эта ошибка имеет какое-либо отношение к моему коду, так как это было раньше в других проектах.

это мой package.json:

{
  "name": "bingodrive-statistics",
  "private": true,
  "scripts": {
    "start": "meteor run"
  },
  "dependencies": {
    "@angular/common": "^2.0.0-rc.1",
    "@angular/compiler": "^2.0.0-rc.1",
    "@angular/core": "^2.0.0-rc.1",
    "@angular/platform-browser": "^2.0.0-rc.1",
    "@angular/router": "^2.0.0-rc.1",
    "@angular2-material/core": "^2.0.0-alpha.4",
    "@angular2-material/toolbar": "^2.0.0-alpha.4",
    "angular2-meteor": "^0.5.5",
    "angular2-meteor-auto-bootstrap": "^0.5.5",
    "es6-shim": "^0.35.0",
    "meteor-node-stubs": "^0.2.3",
    "reflect-metadata": "=0.1.2",
    "rxjs": "=5.0.0-beta.6",
    "zone.js": "^0.6.12"
  }
}

мой .meteor/packages Файл содержит следующее:

meteor-base             # Packages every Meteor app needs to have
mobile-experience       # Packages for a great mobile UX
mongo                   # The database Meteor supports right now
reactive-var            # Reactive variable for tracker
jquery                  # Helpful client-side library
tracker                 # Meteor's client-side reactive programming library

standard-minifier-css   # CSS minifier run for production mode
standard-minifier-js    # JS minifier run for production mode
es5-shim                # ECMAScript 5 compatibility for older browsers.
ecmascript              # Enable ECMAScript2015+ syntax in app code

angular2-compilers
barbatus:angular2-runtime
accounts-password

после всего этого... само сообщение об ошибке!:)

это повторяется и очень долго, но главное исключение:

EXCEPTION: Error in :0:0
VM2668:27 ORIGINAL EXCEPTION: TypeError: Cannot read property 'getLocation' of null
VM2668:27 ORIGINAL STACKTRACE:
VM2668:27 TypeError: Cannot read property 'getLocation' of null
at BrowserPlatformLocation._init (browser_platform_location.js:19)
at new BrowserPlatformLocation (browser_platform_location.js:14)
at DebugAppView.Object.defineProperty.get (BingoDriveStatisticsApp_Host.template.js:35)
at DebugAppView.Object.defineProperty.get (BingoDriveStatisticsApp_Host.template.js:47)
at DebugAppView.Object.defineProperty.get (BingoDriveStatisticsApp_Host.template.js:53)
at DebugAppView.Object.defineProperty.get (BingoDriveStatisticsApp_Host.template.js:59)
at DebugAppView._View_BingoDriveStatisticsApp_Host0.injectorGetInternal (BingoDriveStatisticsApp_Host.template.js:82)
at DebugAppView.AppView.injectorGet (view.js:96)
at DebugAppView.injectorGet (view.js:269)
at ElementInjector.get (element_injector.js:20)
VM2668:27 ERROR CONTEXT:
VM2668:27 
DebugContext {_view: _View_BingoDriveStatisticsApp_Host0, _nodeIndex: 0, _tplRow: 0, _tplCol: 0}

есть идеи что происходит?

Обновить

Я делаю резервную копию проекта в другой каталог, после чего удаляю node_modules и выполняю meteor npm install --save, после этого приложение работает нормально. Итак... что-то сломало приложение, и, удалив node_modules и воссоздав его, я решил проблему.

так что... я ненавижу делать это каждый раз, когда начинаю новый проект.

любая информация по этому вопросу будет принята с благодарностью.

2 ответа

Решена проблема маршрутизации только путем изменения package.json для отражения-метаданных и для rxjs. Мы не должны использовать последнюю версию отражения (0.1.3). "refle-metadata": "=0.1.2", "rxjs": "=5.0.0-beta.6",

Попробуйте изменить зависимости dev с "@angular/platform-browser": "^2.0.0-rc.1", на "angular2-meteor-auto-bootstrap": "^0.5.5",

Другие вопросы по тегам