我是打字稿,淘汰赛和requirejs的新手。我用这个文件创建了一些demo。现在,我想使用typescript和knockoutjs实现一些次要的逻辑。
我创建了4-5个打字稿文件,这些文件是在内部导入的。当我运行html文件。我收到错误说明。标题为
搜索谷歌并花了很多时间,但没有找到合适的解决方案。必须与requireJS相关才能定义所有模块。但是,由于requireJS中的新功能无法赶上。我也搜索了类似错误的stackoverflow,但它并没有帮助我。
等待解决方案
答案 0 :(得分:22)
在这里,您的TypeScript已经愉快地编译为在requireJS环境中工作的代码(技术上,AMD环境)。这意味着它生成的输出假定define / require等都已存在。
总体答案是,在依赖编译代码之前,需要包含RequireJS。
值得注意的是,错误表明您犯了一个单独的错误:您直接依赖于RequireJS模块脚本(即您的HTML中有<script src="my-compiled-code.js"></script>
标记)。这不是需要模块工作的方式。相反,一旦你使RequireJS可用,你应该有一个顶级启动脚本(在HTML中内联或作为一个单独的文件)配置RequireJS然后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。我尝试花费更多的时间玩只需要(可能是纯JavaScript,所以它更清晰)并查看工作示例,所以你可以先让它工作,然后添加其余部分。