2016-04-17 17 views
12

Angular2 TSクイックスタートに続いて、私はプロジェクト全体の多くのフォルダに重複ファイルを持つことになります。ブラウザAngular2 Typescriptファイルの重複ID

:ES6-シム用

typings/browser 
node_modules/angular2/typings/browser 

node_modules/angular2/typings/es6-shim 
typings/browser/ambient/es6-shim 
typings/main/ambient/es6-shim 

それは、ビルド時に重複した識別子のエラーになります。

どのようにして、TSが重複した識別子エラーを引き起こすことを防止/抑制しますか?

私は、私のインクルードでAngular2を使用しているので、私はexcludeリストにnode_modulesを含めました。しかし、TSDはmoduleResolution "node"のためにそれらをバックに含めています。別のmoduleResolution値、たとえば "classic"に置き換えると、他の問題が発生します。 2

これは私が持っているものである

///<reference path="../../node_modules/angular2/typings/browser.d.ts"/> 
import {bootstrap} from 'angular2/platform/browser'; 
import {LocationComponent} from '../location/components/locationcomponent'; 
import {VideosComponent} from '../videos/components/videoscomponent'; 

bootstrap(LocationComponent, []) 
    .catch(err => console.error(err)); 

bootstrap(VideosComponent, []) 
    .catch(err => console.error(err)); 

UPDATE:ここに私のappcomponent.tsだ

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "system", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false, 
    "outDir": "./dist" 
    }, 
    "exclude": [ 
    "bower_components", 
    "node_modules", 
    "typings/main", 
    "typings/main.d.ts" 
    ] 
} 

UPDATE 1

このは私tsconfig.jsonです私のWebプロジェクトファイル。

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion> 
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> 
    </PropertyGroup> 
    <Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props" Condition="'$(VSToolsPath)' != ''" /> 
    <PropertyGroup Label="Globals"> 
    <ProjectGuid>3775534b-d08c-45f2-8d5a-4a4f6e91edb9</ProjectGuid> 
    <RootNamespace>MyProject</RootNamespace> 
    <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath> 
    <OutputPath Condition="'$(OutputPath)'=='' ">..\..\artifacts\bin\$(MSBuildProjectName)\</OutputPath> 
    <SccProjectName>SAK</SccProjectName> 
    <SccProvider>SAK</SccProvider> 
    <SccAuxPath>SAK</SccAuxPath> 
    <SccLocalPath>SAK</SccLocalPath> 
    </PropertyGroup> 
    <PropertyGroup> 
    <SchemaVersion>2.0</SchemaVersion> 
    </PropertyGroup> 
<PropertyGroup Condition="'$(Configuration)' == 'Debug'"> 
    <TypeScriptTarget>ES5</TypeScriptTarget> 
    <TypeScriptJSXEmit>None</TypeScriptJSXEmit> 
    <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled> 
    <TypeScriptNoImplicitAny>False</TypeScriptNoImplicitAny> 
    <TypeScriptModuleKind>CommonJS</TypeScriptModuleKind> 
    <TypeScriptRemoveComments>False</TypeScriptRemoveComments> 
    <TypeScriptOutFile /> 
    <TypeScriptModuleResolution>NodeJs</TypeScriptModuleResolution> 
    <TypeScriptOutDir /> 
    <TypeScriptGeneratesDeclarations>False</TypeScriptGeneratesDeclarations> 
    <TypeScriptNoEmitOnError>True</TypeScriptNoEmitOnError> 
    <TypeScriptSourceMap>True</TypeScriptSourceMap> 
    <TypeScriptMapRoot /> 
    <TypeScriptSourceRoot /> 
    <TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators> 
    </PropertyGroup> 
    <Target Name="FixTsBuildConfiguration" BeforeTargets="CompileTypeScript" > 
    <PropertyGroup> 
     <TypeScriptBuildConfigurations>$(TypeScriptBuildConfigurations.Replace("--moduleResolution NodeJs", "--moduleResolution node"))</TypeScriptBuildConfigurations> 
    </PropertyGroup> 
    </Target> 
    <ItemGroup> 
    <DnxInvisibleContent Include="bower.json" /> 
    <DnxInvisibleContent Include=".bowerrc" /> 
    <DnxInvisibleContent Include="package.json" /> 
    <DnxInvisibleFolder Include="wwwroot\bower_components\" /> 
    <DnxInvisibleFolder Include="wwwroot\node_modules\" /> 
    </ItemGroup> 
    <Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.targets" Condition="'$(VSToolsPath)' != ''" /> 
</Project> 

UPDATE 3

私は、Visual Studio 2015年にAngular2を設定すると、別のアプローチが必要であることが分かりました。私はStarting Angular 2 in ASP.NET 5 with TypeScript using Visual Studio 2015の手順に従いました。ビルドに関する問題はもう発生しませんでした。

+0

2回ブートストラップする理由は何ですか?ほとんどの人は、他のコンポーネントをネストする 'app'または' root'コンポーネントを持っています。 –

+0

これらは共通の要素を持たない2つの別個のコンポーネントです。私のアプリはSPAではありません。それらはサーバー側にレンダリングされます。 –

+0

@JonasArcangel解決策を回答として投稿してください。 – Dinistro

答えて

0

不要なファイルを除外するために、tsconfig.jsonファイルに "filesGlob"エントリを追加できます。たとえば、次のように

"filesGlob": [ 
    "./src/**/*.ts", 
    "./test/**/*.ts", 
    "!./node_modules/**/*.ts", 
    "typings/browser.d.ts" 
    ] 
+0

動作しませんでした。重複した識別子の問題は依然として存在します。何が!記号は?私はそれがなく、 "node_modules/**/*。ts"を持っていた。運がない。 –

+0

"!"記号は除外を意味します –

+0

私は見る。それは私のコンポーネントで参照されていることについては、私のポスト(更新を参照してください)と同じ理由で、おそらく含まれています。 –

8

活字体< = 1.6あなたはそれがために検索**なければ**

"exclude": [ 
    "bower_components/**", 
    "node_modules/**", 
    "typings/main.d.ts", 
    "typings/main/**", 
], 

であなたのtsconfig.jsonにnode_modulesとタイピング/メインファイルを除外する必要が

node_modulesという名前のファイルは、/ mainという型付けであり、ディレクトリ自体ではありません。

活字体> typescriptですバージョンでは1.6

**が必要とされていない1.6を超えます。

EDIT

あなたappcomponent.tsで参照パスを削除します。このようなタイプスクリプトをコンパイルするときは、参照パスは必要ありません。

+0

私はこれを試して、それは私に重複した識別子のものに加えて多くのエラーを与えました。 –

+0

@JonasArcangelあなたは私にこれらのエラーを教えてくださいできますか?おそらく私は問題が何であるかを見ているでしょう。 – Dinistro

+0

@JonasArcangel私の更新された答えを見て、私はあなたの間違いを見つけた – Dinistro

関連する問題