У меня возникли проблемы с пониманием того, как импортировать классы из модулей в TypeScript, особенно для Angular 2 в Visual Studio 2015 (обновление 1) с помощью TypeScript 1.7.
Всюду в документации Angular 2 я вижу операции импорта, такие как:
import {Component} from 'angular2/core';
. Эти файлы находятся в node_modules/angular2/*
. Что делает только angular2/*
работать?
Я могу только избавиться от ошибок в Visual Studio, когда у меня есть относительный путь из каталога приложения, например: ./../node_modules/angular2/platform/browser';
. Это исправляет ошибки сборки Visual Studio, но когда я пытаюсь запустить приложение с помощью System.import('app/boot')
, я получаю кучу таких ошибок:
system.src.js: 1049 GET http://localhost:8080/node_modules/angular2/platform/browser 404 (не найдено)
Другая проблема заключается в том, что в Visual Studio можно использовать такие выражения, как: import {SearchComponent} from './Components/Search/search.component';
, но затем, когда я запускаю ее, существует много ошибок GET в system.src.js:2476
.
Я думал, что установка defaultExtension: 'js'
для System.config
должна была позаботиться об этой проблеме.
UPDATE Вот все файлы, которые я считаю релевантными:
вид/дома/index.html
<script src="node_modules/es6-shim/es6-shim.js"></script>
<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>
<script src="node_modules/angular2/bundles/angular2.dev.js"></script>
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('app/app')
.then(null, console.error.bind(console));
test.csproj
<TypeScriptToolsVersion>1.7</TypeScriptToolsVersion>
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
<TypeScriptModuleResolution>Node</TypeScriptModuleResolution>
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptJSXEmit>None</TypeScriptJSXEmit>
<TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
<TypeScriptNoImplicitAny>False</TypeScriptNoImplicitAny>
<TypeScriptModuleKind>CommonJS</TypeScriptModuleKind>
<TypeScriptRemoveComments>False</TypeScriptRemoveComments>
<TypeScriptOutFile />
<TypeScriptOutDir />
<TypeScriptGeneratesDeclarations>False</TypeScriptGeneratesDeclarations>
<TypeScriptNoEmitOnError>True</TypeScriptNoEmitOnError>
<TypeScriptSourceMap>True</TypeScriptSourceMap>
<TypeScriptMapRoot />
<TypeScriptSourceRoot />
типизации /tsd.d.ts
export * from './../node_modules/angular2/core';
export * from './../node_modules/angular2/common';
export * from './../node_modules/angular2/http';
export * from './../node_modules/angular2/router';
export * from './../node_modules/angular2/platform/browser';
Структура файла:
app/
app.ts
components/
models/
services/
node_modules/ (npm install using Angular 2 quickstart package.json)
angular2/ (not all the files listed)
bundles/ (not all the files listed)
angular2.dev.js
platform/
src/
ts/
typings/
common.d.ts
core.d.ts
http.d.ts
router.d.ts
es6-module-loader/
es6-promise/
es6-shim/
rxjs/
systemjs/
zone.js/
typescript/ (not sure if this needs to be here)
Я не знаком с TypeScript, может быть ошибка, вызванная различными модульными системами TypeScript? Angular 2 рекомендуется установить System.config с помощью format: 'register'
, но https://www.npmjs.com/package/angular2 говорит, что файлы могут быть использованы с использованием CommonJs.
С этими файлами я получаю эти две ошибки консоли:
app.ts:1 Uncaught ReferenceError: require is not defined(anonymous function) @ app.ts:1
angular2-polyfills.js:143 Uncaught TypeError: Cannot read property 'split' of undefined