Lors de l'écriture d'une application Typescripts où j'utilise RequireJS pour charger les modules (j'utilise Visual Studio 2015).Erreur de compilation Typescript + RequireJS lors du chargement du plugin
Je peux facilement charger presque tous les modules à partir des classes .ts que j'ai écrites moi-même depuis des bibliothèques externes en utilisant leur fichier .d.ts.
Mais mon problème commence là où je veux charger un plugin pour jquery.
J'utilise le fichier de frappe pour la bibliothèque, mais il n'y a logiquement aucune définition de module dans le fichier .d.ts car il s'agit juste d'un plugin pour jquery.
J'ai suivi les recommandations pour le chargement de la bibliothèque shim de RequireJS website comme ceci:
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"]);
Et selon le RequireJS website:
La configuration shim définit uniquement des relations de code. Pour charger des modules faisant partie de ou utiliser shim config, un appel require/define normal est nécessaire. Définir shim par lui-même ne déclenche pas le code à charger.
Maintenant, aucun des travaux suivants pour le chargement du plug-in (même après avoir déplacé le jquery.pjax.dt à côté des 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");
compilateur se plaint avec l'erreur Cannot find module "jquery.pjax"
ou File C:/foo/bar/jquery.pjax.d.ts is not a module
.
L'app.ts n'est pas compilé tant que l'un des codes ci-dessus existe et lorsque je le supprime, le plugin n'est pas chargé. En ce qui concerne ce que j'utilise plusieurs importations dans mon fichier app.ts et il y en aura plus, je préfère utiliser le style de chargement de module import Foo = require("foo")
ou import * as Foo from "foo"
en opposition à l'écriture manuelle de la fonction AMD define.
Aussi j'utilise la gestion des paquets Nuget et je préfère ne pas modifier/déplacer manuellement les fichiers externes .d.ts ou .js.
Quelqu'un peut-il m'aider à comprendre cela s'il vous plaît?
Eh bien, c'est une réponse très complète. Confirmant comme réponse maintenant. Merci. :) –
J'ai répondu à quelque chose de similaire en utilisant certainement ce type de vérification http://stackoverflow.com/questions/21179144/how-do-you-setup-a-require-js-config-with-typescript/42955298#42955298 et Tim est droite! – zobidafly