在我使用RequireJS加载模块(我使用Visual Studio 2015)时编写了一个Typescripts应用程序。加载插件时的Typescript + RequireJS编译器错误
我可以使用他们的打字.d.ts文件轻松地加载几乎所有的模块,这些模块可以从我从外部库编写的.ts类中加载。
但我的问题开始,我想加载一个jQuery插件。
我正在使用库的键入文件,但逻辑上在.d.ts文件中没有模块定义,因为它只是jQuery的一个插件。
我从RequireJS website遵循垫片库加载的建议是这样的:根据RequireJS website
requirejs.config({
baseUrl: "Scripts",
paths: {
"jquery": "jquery-2.2.3",
"jquery.pjax": "jquery.pjax"
},
shim:
{
"jquery.pjax":
{
deps: ["jquery"],
exports: "jQuery.fn.pjax"
}
}
});
require(["app"]);
和:
垫片配置仅设置了代码的关系。要加载属于或使用shim config的模块,需要正常的require/define调用。设置垫片本身不会触发代码加载。
现在,既没有加载插件以下工作的(未来移动jquery.pjax.dt到jquery.pjax.js后连):
import * as pjax from "jquery.pjax";
import pjax = require("jquery.pjax");
import pjax = require("./jquery.pjax");
import pjax = require("jquery.pjax.js");
import pjax = require("./jquery.pjax.js");
编译器抱怨与错误Cannot find module "jquery.pjax"
或File C:/foo/bar/jquery.pjax.d.ts is not a module
。
只要上述任何代码存在,app.ts就不会被编译,当我删除它们时,插件不会被加载。
考虑到我在我的app.ts文件中使用了多个导入,并且会有更多的导入,我倾向于使用import Foo = require("foo")
或import * as Foo from "foo"
模块加载样式来反对手动编写AMD定义函数。
此外,我正在使用Nuget包管理,我不喜欢手动编辑/移动外部.d.ts或.js文件。
任何人都可以帮我解决这个问题吗?
那么这是一个非常全面的答案。现在确认为答复。谢谢。 :) –
我没有回答类似的东西使用明确检查这个http://stackoverflow.com/questions/21179144/how-do-you-setup-a-require-js-config-with-typescript/42955298#42955298和蒂姆是对! – zobidafly