簡體   English   中英

未捕獲ReferenceError:define未定義打字稿

[英]Uncaught ReferenceError: define is not defined typescript

我是TypeScript,Knockout和requirejs的新手。 我已經使用此文件創建了一些演示。 現在,我想使用Typescript和Knockoutjs實現一些次要邏輯。

我創建了4-5個打字稿文件,這些文件在內部導入。 當我運行html文件時。 我收到錯誤說明。 如標題

在此處輸入圖片說明 有人可以幫我解決這個錯誤。 我在此代碼中缺少什么。

在Google上進行搜索並花了很多時間,但沒有找到合適的解決方案。 它必須與requireJS有關以定義所有模塊。 但是,由於requireJS中的新功能無法趕上這一步。 我也搜索了stackoverflow以查找類似的錯誤,但這並沒有幫助我。

等待解決方案

在這里,您的TypeScript已經過愉快的編譯,可以在requireJS環境 (技術上是AMD環境)下工作的代碼。 這意味着它生成的輸出假定所有定義/要求等已經存在。

總體答案是,在依賴編譯的代碼之前,您需要包括RequireJS。

值得注意的是,該錯誤表明您犯了一個單獨的錯誤:您直接依賴於RequireJS模塊腳本(即,您的HTML中有一個<script src="my-compiled-code.js"></script>標記)。 這不是需求模塊的工作方式。 相反,一旦使RequireJS可用,就應該有一個配置RequireJS並隨后require()是應用程序頂級文件的頂級啟動腳本(在HTML中內聯或作為單獨的文件)。開始一切。 您可以手動加載該文件,也可以使用RequireJS的“ data-main”屬性加載該文件。

例如,最小的HTML看起來像:

<!DOCTYPE html>
<html>
    <head>
        <script data-main="scripts/main" src="scripts/require.js"></script>
    </head>
    <body>
    </body>
</html>

這將從'scripts / require.js'加載RequireJS,然后告訴它在'scripts / main.js'加載腳本以開始加載過程(您可能需要更新兩個路徑-注意data-main不會不需要.js擴展名)。

然后,主腳本應該非常簡單,例如:

// Set up any config you need (you might not need this)
requirejs.config({
  basePath: "/scripts"
});

// Tell RequireJS to load your main module (and its dependencies)
require("mainmodule");

通常,這不是您要解決的TypeScript問題,而是RequireJS。 我會嘗試花更多的時間來玩Require(也許是在純JavaScript中,所以更清楚),然后看一些工作示例,這樣您就可以先開始工作,然后再添加其余部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM