【问题标题】:Uncaught ReferenceError: define is not defined typescript未捕获的 ReferenceError:定义未定义打字稿
【发布时间】:2016-12-13 13:05:51
【问题描述】:

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

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

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

在谷歌上搜索并度过了一段美好的时光,但没有找到合适的解决方案。它必须与requireJS相关才能定义所有模块。但是,作为 requireJS 中的新功能,它无法赶上。我也在 stackoverflow 中搜索过类似的错误,但对我没有帮助。

等待解决

【问题讨论】:

  • 请出示demotest.htm文件。

标签: javascript knockout.js typescript requirejs


【解决方案1】:

在这里,您的 TypeScript 已愉快地编译为可在 requireJS 环境中运行的代码(技术上,是 AMD 环境)。这意味着它生成的输出假定定义/要求等都已经存在。

总体答案是,在依赖编译代码之前,您需要包含 RequireJS。

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

【讨论】:

  • 是的,你是对的。问题解决了。错误是我已经包含了 require.js 文件和已经在 require.js 文件中声明的其他两个文件。问题出在 demotest.htm 感谢您的帮助
猜你喜欢
  • 2016-10-23
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-31
  • 2023-01-23
  • 2016-11-03
  • 2011-01-05
相关资源
最近更新 更多