2016-07-06 110 views
0

我想在VS 2013(更新5)IDE中開發一個使用angularjs 2的應用程序。Angularjs 2 with visual studio 2013(update 5)

我現在用的是活生生的實例在這裏 - https://angular.io/docs/ts/latest/cookbook/a1-a2-quick-reference.html

我沒有的NodeJS /安裝在我的機器NPM(如公司不支持它的現在)...所以我指的是故宮模塊使用systemjs.config.js中提到的CDN URL。

當我在Visual Studio中構建(構建/重建選項)應用程序時,出現如下錯誤 - 無法找到模塊'@ angular/core'。 找不到模塊'@ angular/platform-b​​rowser-dynamic'。

如果我運行我的應用程序 - 我收到錯誤,正如我在本文中提到的(當我按F12時)。 https://stackoverflow.com/questions/38044718/angularjs-2-in-visual-studio-2013-not-translpiling

我試圖從另一臺機器複製@angular模塊 - 它似乎無法找到模塊'@ angular/core' - 這個問題正在消失。

我們是否需要在本地機器上安裝npm模塊才能使角2正常工作?如果是這樣,那麼這個plunker例子是如何工作的?

如果我們在本地引用CDN url而不是npm模塊,tsconfig.js中的「moduleresolution」條目是否可以工作?

編輯:解enter image description here

+0

收銀臺上Angular2文檔網站上的例子。你不需要安裝node.js – maxisam

+0

不,他們提到我們不需要在本地安裝npm模塊......我也認爲我們不需要安裝...但是在那種情況下,我們是否需要指定一些其他值爲模塊解決? – Relativity

+0

將[現場示例](https://angular.io/docs/ts/latest/tutorial/toh-pt1.html)下載到本地。它應該運行沒有問題。 – maxisam

回答

0

看來VS 2013是不支持tsconfig.json截至目前。

您可以定義您在項目文件中使用的相同配置。例如:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false 
    } 
} 
can be defined in the project file as: 

    <PropertyGroup Condition="'$(Configuration)' == 'Debug'"> 
    <TypeScriptTarget>ES5</TypeScriptTarget> 
    <TypeScriptModuleKind>commonjs</TypeScriptModuleKind> 
    <TypeScriptModuleResolution>node</TypeScriptModuleResolution> 
    <TypeScriptSourceMap>True</TypeScriptSourceMap> 
    <TypeScriptEmitDecoratorMetadata>True</TypeScriptEmitDecoratorMetadata> 
    <TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators> 
    <TypeScriptRemoveComments>False</TypeScriptRemoveComments> 
    <TypeScriptNoImplicitAny>True</TypeScriptNoImplicitAny> 
    </PropertyGroup> 

https://github.com/Microsoft/TypeScript/issues/8784

而且更改您的systemjs.config.js如下。 (我不知道這是否是正確的事情,但似乎工作)。

var config = { 
    // DEMO ONLY! REAL CODE SHOULD NOT TRANSPILE IN THE BROWSER 
    transpiler: 'ts', 
    typescriptOptions: { 
     tsconfig: false 
    }, 
    meta: { 
     'typescript': { 
     "exports": "ts" 
     } 
    }, 
    map: map, 
    packages: packages 
    }; 

@MaxiSam - I

+0

老實說,我仍然認爲這很奇怪當你設置' false < TypeScriptEnabled>'和' false'VS不應該從ts生成任何js,這意味着它根本不需要讀tsconfig。 – maxisam

+0

這是真的......但在systemjs.config中。 js,我們應該告訴角色它不應該尋找那個文件,對嗎?和CompileOnSave是真的在我的案件。 – Relativity

+0

不是真的,systemjs.config.js是systemJS的配置。所以將它設置爲true意味着在systemJS傳輸打字稿時告訴systemJS讀取tsconfig。將其設置爲false,它將只使用默認值。國際海事組織,你應該設置CompileOnSave爲假,並從項目中刪除所有現有的transpile。 – maxisam

0

我明白了。你試試這個凸出文件。(你需要卸載它來編輯它)

<!-- <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersio‌​n)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualSt‌​udioVersion)\TypeScript\Microsoft.TypeScript.targets')" /> --> 
<PropertyGroup> 
    <TypeScriptEnabled>false</TypeScriptEnabled> 
</PropertyGroup> 
</Project> 
+0

感謝您的回覆。我試過這個,但沒有幫助我:( – Relativity

+0

真的嗎?這應該隱藏您的打字稿標籤在項目屬性頁 – maxisam

+0

false false Relativity