2016-09-26 970 views
3

我在我的應用程序中有三個TypeScript文件。當我建,他們編譯罰款,咕嘟咕嘟使他們在正確的地方,和應用程序崩潰,因爲我得到:編譯的TypeScript中的「require is not defined」錯誤怎麼辦?

ReferenceError: require is not defined

對於每個從TS編譯輸出三個JS文件。現在我不能很好地告訴tsc「不要使用require」,可以嗎?

當我

<reference path="~/wwwroot/js/system.src.js" /> 

添加引用gulpFile.js,然後require在該文件中的作品,但畢竟是我的構建運行,而不是在瀏覽器上運行。如果我將它添加到其中一個編譯的JS文件中,它不起作用。

回答

2

在加載應用程序之前,您需要手動添加一些文件到您的index.html或您使用的其他任何文件(即cshtml Razor模板)。它應該看起來像這樣

<!-- 1. Load libraries --> 
<!-- Polyfill(s) for older browsers --> 
<script src="~/lib/core-js/client/shim.min.js"></script> 
<script src="~/lib/zone.js/dist/zone.js"></script> 
<script src="~/lib/reflect-metadata/Reflect.js"></script> 
<script src="~/lib/systemjs/dist/system.src.js"></script> 

<!-- 2. Configure SystemJS --> 
<script src="~/app/system.config.js" asp-append-version="true"></script> 
<script> 
    System.import('app').catch(function(err){ console.error(err); }); 
</script> 

順序很重要。這是運行應用程序所必需的。

如果您在Visual Studio中遇到錯誤,那麼您可能會錯過所需的「類型」。

到現在爲止,你需要安裝分型(從的NodeJS頁面安裝的NodeJS,使其在shell/PowerShell中/命令行全局可用),然後運行npm install typings -g安裝分型,並切換到文件夾,你的項目和運行typings install dt~node,typings install dt~jasminetypings install dt~core-js。這會在typings文件夾中安裝輸入文件。

隨着打字稿2.0有通過NPM瓦特/安裝類型定義Ó需要分型的(參見打字稿2.0公告here),通過運行下面的命令的更新:npm install -s @types/<nameofthelibrary>,即npm install -s @types/nodenpm install -s @types/jasminenpm install -s @types/core-js

require方法在node包/分型定義,如在節點分型內的index.d.ts文件中declare var require: NodeRequire;看出。

相關問題