2016-03-24 133 views
1

我正在使用Gulp 4並將Script編譯爲javascript。爲此,我使用了gulp-typescript插件。雖然它編譯我收到一堆錯誤而compliling:Gulp 4 TypeScript編譯錯誤

錯誤:

[17:43:02] Using gulpfile ~/Sites/dmfa/gulpfile.js 
[17:43:02] Starting 'typescript'... 
[17:43:02] Starting 'clean-typescript'... 
[17:43:02] Cleaning: ./web/js/**/*.js 
[17:43:02] Finished 'clean-typescript' after 21 ms 
[17:43:02] Starting '<anonymous>'... 
[17:43:02] Compiling TypeScript --> JavaScript 
error TS2304: Cannot find name 'Promise'. 
error TS2304: Cannot find name 'Map'. 
error TS2304: Cannot find name 'MapConstructor'. 
error TS2304: Cannot find name 'SetConstructor'. 
error TS2304: Cannot find name 'Set'. 
error TS2304: Cannot find name 'Iterator'. 
[17:43:03] TypeScript: 76 semantic errors 
[17:43:03] TypeScript: emit succeeded (with errors) 
[17:43:03] Finished '<anonymous>' after 1.75 s 
[17:43:03] Finished 'typescript' after 1.77 s 

Process finished with exit code 0 

雖然這仍然編譯真正的錯誤,也許是在看,這將是更令人高興的我去糾正錯誤。

任何人都可以給我一些洞察,爲什麼會發生這些錯誤。

回答

1

以防萬一有人在想這裏是什麼修復了我的一切。我在main.js文件(引導文件)的頂部添加了以下內容。發現這個在這裏:Angular 2 typescript can't find names

///<reference path="node_modules/angular2/typings/browser.d.ts"/> 

文件main.ts文件看起來是這樣的:

///<reference path="../../../node_modules/angular2/typings/browser.d.ts"/> 
import {bootstrap} from 'angular2/platform/browser'; 
import {AppComponent} from './app.component'; 

bootstrap(AppComponent) 
    .catch(err => console.error(err)); 

只要確保路徑對node_modules文件夾的正確路徑作爲我的打字稿嵌套在我的項目。

1

它看起來像是針對ES5/ES3並使用打字稿的功能,僅當編譯定向ES6時才支持。要解決這個問題,你可以嘗試在gulp-typescript中明確提供'target'選項作爲ES6,或者如果你將tsconfig提供給它 - 確保你在那裏設置目標ES6。

+0

@Amind它是如何影響我的最終結果的。並非所有的瀏覽器都支持ES6,那麼會導致瀏覽器出現錯誤而不支持? – Dblock247

+0

是的。您將需要使用填充來填充缺失的功能。例如對於承諾,您可以使用es6-promise。但我不確定你會以這種方式覆蓋每一個功能。你也可以使用babel等從es6轉換到es5,但我不認爲它會完全覆蓋。 – Amid