繁体   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