gpt4 book ai didi

typescript - Angular2 Typescript 文件的重复标识符

转载 作者:太空狗 更新时间:2023-10-29 17:03:22 24 4
gpt4 key购买 nike

按照 Angular2 TS 快速入门,我最终在我的项目中的许多文件夹中都有重复文件。

对于浏览器:

typings/browser 
node_modules/angular2/typings/browser

对于 es6-shim:

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

它会导致构建期间出现重复标识符错误。

我们如何防止/抑制 TS 引发重复标识符错误?

我已将 node_modules 包含在我的排除列表中,但是,由于我在我的包含中使用 Angular2,TSD 将它们包含回去,因为 moduleResolution“node”。将其替换为另一个 moduleResolution 值(例如“经典”)会导致其他问题。

这是我的 tsconfig.json:

{
"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"
]
}

更新 1

这是我的 appcomponent.ts:

///<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));

更新 2

这是我的 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>

更新 3

我发现在 Visual Studio 2015 中设置 Angular2 需要另一种方法。我按照 Starting Angular 2 in ASP.NET 5 with TypeScript using Visual Studio 2015 中的步骤操作我再也没有遇到任何构建问题。

最佳答案

typescript <= 1.6

您需要使用 **

排除 tsconfig.json 中的 node_modules 和 typings/main 文件
"exclude": [
"bower_components/**",
"node_modules/**",
"typings/main.d.ts",
"typings/main/**",
],

如果没有 **,它会搜索名为 node_modules typings/main 的文件,而不是目录本身。

typescript > 1.6

在 1.6 以上的 typescript 版本中,不需要 **

编辑

删除 appcomponent.ts 中的引用路径。像这样编译 typescript 时不需要引用路径。

关于typescript - Angular2 Typescript 文件的重复标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36671555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com