Ich möchte ein npm-Modul für einen Authentifizierungsdienst schreiben, den ich in mehreren Apps verwende. Ich sah mir andere Pakete an, konnte aber keinen großen Unterschied feststellen.Angular2 custom npm package
Mein Modul Abschnitt ::
mein Package.json:
{
"name": "myApi-services",
"version": "1.0.0-11",
"main": "index.js", //referring to the compiled js file from index.ts
"dependencies": {
"@angular/common": "2.1.0",
"@angular/core": "^2.1.0",
"@angular/http": "^2.1.0",
"@angular/platform-browser": "^2.1.0",
"angular2-jwt": "^0.1.25",
"rxjs": "5.0.0-beta.12",
"zone.js": "^0.6.21"
}
}
mein Index.ts
export { MyAuthService} from "./authenticate"
meine Authentifizieren Klasse
import { Http, Headers } from '@angular/http';
import { Config } from './config'
export class Authenticate {
constructor(private http:Http, private authUrl:string) {
this.authUrl = Config.authUrl;
}
public login(username:string, password:string): void {
let headers = new Headers();
headers.append('Authorization', 'Basic ' + btoa(username + ':' + password));
headers.append('Accept', 'application/json');
this.http.post(this.authUrl, {}, { headers: headers })
.subscribe(
response => {
this.storeToken(response.json().token);
},
err => console.log(err),
() => console.log('Request Complete')
);
}
private storeToken(token: string):void{
localStorage.setItem('apiservices_token', token);
console.log(localStorage.getItem('apiservices_token'))
}
}
Mein Import Abschnitt ::
package.json
"depenencies":{
"MyApi-services": "file:/// .... "
}
Der Import funktioniert das Modul importes zum node_modules Ordner
app.module.ts bekommt
import { Authenticate } from 'myApi-services'
@NgModule({
imports:[ Authenticate ]
})
app.component.ts
import { Authenticate } from 'myApi-services'
...
constructor(private auth: Authenticate){}
private login():void{
auth.login('me', '12345');
}
....
Einer der Fehler, die durch den Browser geworfen:
Uncaught Error: Unexpected value 'Authenticate' declared by the module 'AppModule'
Dieser Fehler wird durch imorting das Modul verursacht. Die Angabe als Provider funktioniert auch nicht. Der Fehler ist der gleiche.
Weiß jemand, wie man eigene kundenspezifische Plugins für angular2 erstellt und wie man sie richtig einspritzt?
Versuchen Sie, Authentifizierung in Providern nicht zu importieren, Import ist hauptsächlich für Moduldeklarationen. –
Es wirft die gleiche Ausnahme. Kann es ein Problem sein, Klassenvariablen im Konstruktor des Moduls zu deklarieren? – marcel