Uncaught ReferenceError: define is not defined typescript

Uncaught ReferenceError: define is not defined typescript

我是 typescript、knockout 和 requirejs 的新手。我已经使用这些文件创建了一些演示。现在,我想使用 typescript 和 knockoutjs 实现一些次要逻辑。

我创建了 4-5 个内部导入的打字稿文件。当我运行 html 文件。我收到错误说明。如题

有人可以帮我解决这个错误吗?我在这段代码中缺少什么。

在 google 上搜索并花了很多时间,但没有找到合适的解决方案。它必须与 requireJS 相关才能定义所有模块。但是,作为 requireJS 中的新功能,无法赶上它。我也在 Whosebug 上搜索了类似的错误,但它并没有帮助我。

等待解决方案

在这里,您的 TypeScript 已顺利编译,生成可在 requireJS 环境(技术上,AMD 环境)中工作的代码。这意味着它生成的输出假定 define/require 等都已经存在。

总的来说,你需要在依赖编译代码之前包含 RequireJS。

值得注意的是,该错误表明您犯了一个单独的错误:您直接依赖于 RequireJS 模块脚本(即您的 HTML 中有一个 <script src="my-compiled-code.js"></script> 标记)。这不是 require 模块的工作方式。相反,一旦您使 RequireJS 可用,您应该有一个顶级启动脚本(在您的 HTML 中内联或作为一个单独的文件)来配置 RequireJS 然后 require() 的顶部应用程序的 -level 文件来启动一切。您可以手动或使用 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,这样更清楚)并查看工作示例,这样您就可以先让那部分工作,然后再添加其余部分。