Dattiloscritto il caricamento del modulo esterno AMD, angolare non è definito
-
26-12-2019 - |
Domanda
So che ci sono già alcune domande simili su questo argomento, ma in qualche modo nessuno di loro ha aiutato. Voglio usare Angular.js in un progetto che utilizza RequireJ e dattiloscritto.
Ho un modulo, dove uso angolare per creare un modulo di servizio:
/// <reference path="../../../typings/angularjs/angular.d.ts" />
...
var services = angular.module('services', []);
...
export = services;
.
Questo codice compili l'errore con l'errore, ma nel file JS creato, c'è Angular.js dipendenza non è presente:
define(["require", "exports"], function(require, exports) {
...
}
.
E quando eseguo l'applicazione, il browser lamenta: InductErCearror Incord: Angular non è definito
La mia ipotesi è, che in qualche modo dovrei importare l'angolare oltre a referenziarlo, ma nessuno dei sentieri ho provato funziona.
Ecco la mia configurazione del mio bisogno.js, nel caso in cui sia necessario:
require.config({
paths: {
angular: '../lib/angular/angular',
...
},
shim: {
angular : {exports : 'angular'},
...
}
)}
.
puoi aiutarmi, cosa manca qui? Grazie.
Soluzione
Hai provato ad aggiungere quanto segue alla parte superiore del tuo file
/// <amd-dependency path="angular"/>
.
Questo dovrebbe rendere il compilatore TS aggiungere angolare all'elenco Definisci.
Altri suggerimenti
Quando si utilizza un commento di riferimento:
/// <reference path="../../../typings/angularjs/angular.d.ts" />
.
Stai dicendo al compilatore "Assicuro che questa dipendenza sia disponibile in runtime".
Se si desidera caricare il modulo, è necessario utilizzare un'importazione invece ...
import angular = require('angular');
.
Il modo di impostazione zero per fare ciò è quello di posizionare il file angular.d.ts
accanto al file angular.js
attuale, quindi il percorso specificato nell'istruzione di importazione è lo stesso in entrambi i modi - in caso contrario, utilizzare la tua configurazione richiesta a Shimmy il tuopercorso.