1
Good Afternoon.
I am trying to build my Angular project, however, it lacks a module called Dbkeys, I tried to reinstall the node_modules package using the command npm install
, I tried to clear the cache, tried to download the module individually, however, all previously adopted measures unsuccessfully.
Follow the error I get when building my Angular project:
root@instance-4 /v/l/j/w/B/g/G/G/ClientApp# ng b
Date: 2019-02-24T20:28:45.329Z
Hash: 198ac103d49163456ee1
Time: 18622ms
chunk {main} main.js, main.js.map (main) 696 bytes [initial] [rendered]
chunk {polyfills} polyfills.js, polyfills.js.map (polyfills) 92.5 kB [initial] [rendered]
chunk {runtime} runtime.js, runtime.js.map (runtime) 6.08 kB [entry] [rendered]
chunk {scripts} scripts.js, scripts.js.map (scripts) 311 kB [entry] [rendered]
chunk {styles} styles.css, styles.css.map (styles) 272 kB [initial] [rendered]
ERROR in src/app/services/auth.service.ts(14,24): error TS2307: Cannot find module './db-Keys'.
src/app/services/configuration.service.ts(10,24): error TS2307: Cannot find module './db-Keys'.
Follow my project settings:
Angular CLI: 6.0.8
Node: 10.15.0
OS: linux x64
Angular: 6.0.9
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.6.8
@angular-devkit/build-angular 0.13.1
@angular-devkit/build-optimizer 0.13.1
@angular-devkit/build-webpack 0.13.1
@angular-devkit/core 0.6.8
@angular-devkit/schematics 0.6.8
@angular/cli 6.0.8
@ngtools/webpack 7.3.1
@schematics/angular 0.6.8
@schematics/update 0.6.8
rxjs 6.3.3
typescript 2.7.2
webpack 4.29.0
Log debug of npm:
0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node',
1 verbose cli '/usr/local/bin/npm',
1 verbose cli 'run',
1 verbose cli 'build',
1 verbose cli '--',
1 verbose cli '--prod' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'prebuild', 'build', 'postbuild' ]
5 info lifecycle [email protected]~prebuild: [email protected]
6 info lifecycle [email protected]~build: [email protected]
7 verbose lifecycle [email protected]~build: unsafe-perm in lifecycle true
8 verbose lifecycle [email protected]~build: PATH: /usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/var/lib/jenkins/workspace
/BuildDemo/gerenciador-projetos/GerenciadorProjeto/GerenciadorProjeto/ClientApp/node_modules/.bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/u
sr/games:/snap/bin:/var/lib/jenkins/.dotnet/tools:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/
bin
9 verbose lifecycle [email protected]~build: CWD: /var/lib/jenkins/workspace/BuildDemo/gerenciador-projetos/GerenciadorProjeto/GerenciadorProjeto/Cli
entApp
10 silly lifecycle [email protected]~build: Args: [ '-c', 'ng build --extract-css "--prod"' ]
11 silly lifecycle [email protected]~build: Returned: code: 1 signal: null
12 info lifecycle [email protected]~build: Failed to exec build script
13 verbose stack Error: [email protected] build: `ng build --extract-css "--prod"`
13 verbose stack Exit status 1
13 verbose stack at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:301:16)
13 verbose stack at EventEmitter.emit (events.js:182:13)
13 verbose stack at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack at ChildProcess.emit (events.js:182:13)
13 verbose stack at maybeClose (internal/child_process.js:962:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:251:5)
14 verbose pkgid [email protected]
15 verbose cwd /var/lib/jenkins/workspace/BuildDemo/gerenciador-projetos/GerenciadorProjeto/GerenciadorProjeto/ClientApp
16 verbose Linux 4.15.0-1027-gcp
17 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "build" "--" "--prod"
18 verbose node v10.15.0
19 verbose npm v6.4.1
20 error code ELIFECYCLE
21 error errno 1
22 error [email protected] build: `ng build --extract-css "--prod"`
22 error Exit status 1
23 error Failed at the [email protected] build script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]
#
src/app/services/auth.service.ts
import { Injectable } from '@angular/core';
import { Router, NavigationExtras } from "@angular/route";
import { Observable, Subject } from 'rxjs';
import { map } from 'rxjs/operators';
import { LocalStoreManager } from './local-store-manager.service';
import { EndpointFactory } from './endpoint-factory.service';
import { ConfigurationService } from './configuration.service';
import { DBkeys } from './db-Keys';
import { JwtHelper } from './jwt-helper';
import { Utilities } from './utilities';
import { LoginResponse, IdToken } from '../models/login-response.model';
import { User } from '../models/user.model';
import { Permission, PermissionNames, PermissionValues } from '../models/permission.model';
import { ProjectManager } from '../models/projectManager.model';
@Injectable()
export class AuthService {
public get loginUrl() { return this.configurations.loginUrl; }
public get homeUrl() { return this.configurations.homeUrl; }
public loginRedirectUrl: string;
public logoutRedirectUrl: string;
public reLoginDelegate: () => void;
private previousIsLoggedInCheck = false;
private _loginStatus = new Subject<boolean>();
constructor(private router: Router, private configurations: ConfigurationService, private endpointFactory: EndpointFactory, private localStorage: LocalStoreManager) {
this.initializeLoginStatus();
}
private initializeLoginStatus() {
this.localStorage.getInitEvent().subscribe(() => {
this.reevaluateLoginStatus();
});
}
gotoPage(page: string, preserveParams = true) {
let navigationExtras: NavigationExtras = {
queryParamsHandling: preserveParams ? "merge" : "", preserveFragment: preserveParams
};
this.router.navigate([page], navigationExtras);
}
redirectLoginUser() {
let redirect = this.loginRedirectUrl && this.loginRedirectUrl != '/' && this.loginRedirectUrl != ConfigurationService.defaultHomeUrl ? this.loginRedirectUrl : this.homeUrl;
this.loginRedirectUrl = null;
let urlParamsAndFragment = Utilities.splitInTwo(redirect, '#');
let urlAndParams = Utilities.splitInTwo(urlParamsAndFragment.firstPart, '?');
let navigationExtras: NavigationExtras = {
fragment: urlParamsAndFragment.secondPart,
queryParams: Utilities.getQueryParamsFromString(urlAndParams.secondPart),
queryParamsHandling: "merge"
};
this.router.navigate([urlAndParams.firstPart], navigationExtras);
}
redirectLogoutUser() {
let redirect = this.logoutRedirectUrl ? this.logoutRedirectUrl : this.loginUrl;
this.logoutRedirectUrl = null;
this.router.navigate([redirect]);
}
redirectForLogin() {
this.loginRedirectUrl = this.router.url;
this.router.navigate([this.loginUrl]);
}
reLogin() {
this.localStorage.deleteData(DBkeys.TOKEN_EXPIRES_IN);
if (this.reLoginDelegate) {
this.reLoginDelegate();
}
else {
this.redirectForLogin();
}
}
refreshLogin() {
return this.endpointFactory.getRefreshLoginEndpoint<LoginResponse>().pipe(
map(response => this.processLoginResponse(response, this.rememberMe)));
}
login(userName: string, password: string, rememberMe?: boolean) {
if (this.isLoggedIn)
this.logout();
return this.endpointFactory.getLoginEndpoint<LoginResponse>(userName, password).pipe(
map(response => this.processLoginResponse(response, rememberMe)));
}
private processLoginResponse(response: LoginResponse, rememberMe: boolean) {
let accessToken = response.access_token;
if (accessToken == null)
throw new Error("Received accessToken was empty");
let idToken = response.id_token;
let refreshToken = response.refresh_token || this.refreshToken;
let expiresIn = response.expires_in;
let tokenExpiryDate = new Date();
tokenExpiryDate.setSeconds(tokenExpiryDate.getSeconds() + expiresIn);
let accessTokenExpiry = tokenExpiryDate;
let jwtHelper = new JwtHelper();
let decodedIdToken = <IdToken>jwtHelper.decodeToken(response.id_token);
let permissions: PermissionValues[] = Array.isArray(decodedIdToken.permission) ? decodedIdToken.permission : [decodedIdToken.permission];
if (!this.isLoggedIn)
this.configurations.import(decodedIdToken.configuration);
let user = new User(
decodedIdToken.sub,
decodedIdToken.name,
decodedIdToken.fullname,
decodedIdToken.email,
decodedIdToken.jobtitle,
decodedIdToken.phone,
Array.isArray(decodedIdToken.role) ? decodedIdToken.role : [decodedIdToken.role]);
user.isEnabled = true;
this.saveUserDetails(user, permissions, accessToken, idToken, refreshToken, accessTokenExpiry, rememberMe);
this.reevaluateLoginStatus(user);
return user;
}
private saveUserDetails(user: User, permissions: PermissionValues[], accessToken: string, idToken: string, refreshToken: string, expiresIn: Date, rememberMe: boolean) {
if (rememberMe) {
this.localStorage.savePermanentData(accessToken, DBkeys.ACCESS_TOKEN);
this.localStorage.savePermanentData(idToken, DBkeys.ID_TOKEN);
this.localStorage.savePermanentData(refreshToken, DBkeys.REFRESH_TOKEN);
this.localStorage.savePermanentData(expiresIn, DBkeys.TOKEN_EXPIRES_IN);
this.localStorage.savePermanentData(permissions, DBkeys.USER_PERMISSIONS);
this.localStorage.savePermanentData(user, DBkeys.CURRENT_USER);
}
else {
this.localStorage.saveSyncedSessionData(accessToken, DBkeys.ACCESS_TOKEN);
this.localStorage.saveSyncedSessionData(idToken, DBkeys.ID_TOKEN);
this.localStorage.saveSyncedSessionData(refreshToken, DBkeys.REFRESH_TOKEN);
this.localStorage.saveSyncedSessionData(expiresIn, DBkeys.TOKEN_EXPIRES_IN);
this.localStorage.saveSyncedSessionData(permissions, DBkeys.USER_PERMISSIONS);
this.localStorage.saveSyncedSessionData(user, DBkeys.CURRENT_USER);
}
this.localStorage.savePermanentData(rememberMe, DBkeys.REMEMBER_ME);
}
logout(): void {
this.localStorage.deleteData(DBkeys.ACCESS_TOKEN);
this.localStorage.deleteData(DBkeys.ID_TOKEN);
this.localStorage.deleteData(DBkeys.REFRESH_TOKEN);
this.localStorage.deleteData(DBkeys.TOKEN_EXPIRES_IN);
this.localStorage.deleteData(DBkeys.USER_PERMISSIONS);
this.localStorage.deleteData(DBkeys.CURRENT_USER);
this.configurations.clearLocalChanges();
this.reevaluateLoginStatus();
}
private reevaluateLoginStatus(currentUser?: User) {
let user = currentUser || this.localStorage.getDataObject<User>(DBkeys.CURRENT_USER);
let isLoggedIn = user != null;
if (this.previousIsLoggedInCheck != isLoggedIn) {
setTimeout(() => {
this._loginStatus.next(isLoggedIn);
});
}
this.previousIsLoggedInCheck = isLoggedIn;
}
getLoginStatusEvent(): Observable<boolean> {
return this._loginStatus.asObservable();
}
get currentUser(): User {
let user = this.localStorage.getDataObject<User>(DBkeys.CURRENT_USER);
this.reevaluateLoginStatus(user);
return user;
}
get userPermissions(): PermissionValues[] {
return this.localStorage.getDataObject<PermissionValues[]>(DBkeys.USER_PERMISSIONS) || [];
}
get accessToken(): string {
this.reevaluateLoginStatus();
return this.localStorage.getData(DBkeys.ACCESS_TOKEN);
}
get accessTokenExpiryDate(): Date {
this.reevaluateLoginStatus();
return this.localStorage.getDataObject<Date>(DBkeys.TOKEN_EXPIRES_IN, true);
}
get isSessionExpired(): boolean {
if (this.accessTokenExpiryDate == null) {
return true;
}
return !(this.accessTokenExpiryDate.valueOf() > new Date().valueOf());
}
get idToken(): string {
this.reevaluateLoginStatus();
return this.localStorage.getData(DBkeys.ID_TOKEN);
}
get refreshToken(): string {
this.reevaluateLoginStatus();
return this.localStorage.getData(DBkeys.REFRESH_TOKEN);
}
get isLoggedIn(): boolean {
return this.currentUser != null;
}
get rememberMe(): boolean {
return this.localStorage.getDataObject<boolean>(DBkeys.REMEMBER_ME) == true;
}
}
#
src/app/services/Configuration.service.ts
import { Injectable } from '@angular/core';
import { AppTranslationService } from './app-translation.service';
import { LocalStoreManager } from './local-store-manager.service';
import { DBkeys } from './db-Keys';
import { Utilities } from './utilities';
import { environment } from '../../environments/environment';
type UserConfiguration = {
language: string,
homeUrl: string,
theme: string,
showDashboardStatistics: boolean,
showDashboardNotifications: boolean,
showDashboardTodo: boolean,
showDashboardBanner: boolean
};
@Injectable()
export class ConfigurationService {
public static readonly appVersion: string = "2.6.1";
public baseUrl = environment.baseUrl || Utilities.baseUrl();
public loginUrl = environment.loginUrl;
public fallbackBaseUrl = "http://quickapp.ebenmonney.com";
//***Specify default configurations here***
public static readonly defaultLanguage: string = "pt";
public static readonly defaultHomeUrl: string = "/";
public static readonly defaultTheme: string = "Default";
public static readonly defaultShowDashboardStatistics: boolean = true;
public static readonly defaultShowDashboardNotifications: boolean = true;
public static readonly defaultShowDashboardTodo: boolean = false;
public static readonly defaultShowDashboardBanner: boolean = true;
//***End of defaults***
private _language: string = null;
private _homeUrl: string = null;
private _theme: string = null;
private _showDashboardStatistics: boolean = null;
private _showDashboardNotifications: boolean = null;
private _showDashboardTodo: boolean = null;
private _showDashboardBanner: boolean = null;
constructor(private localStorage: LocalStoreManager, private translationService: AppTranslationService) {
this.loadLocalChanges();
}
private loadLocalChanges() {
if (this.localStorage.exists(DBkeys.LANGUAGE)) {
this._language = this.localStorage.getDataObject<string>(DBkeys.LANGUAGE);
this.translationService.changeLanguage(this._language);
}
else {
this.resetLanguage();
}
if (this.localStorage.exists(DBkeys.HOME_URL))
this._homeUrl = this.localStorage.getDataObject<string>(DBkeys.HOME_URL);
if (this.localStorage.exists(DBkeys.THEME))
this._theme = this.localStorage.getDataObject<string>(DBkeys.THEME);
if (this.localStorage.exists(DBkeys.SHOW_DASHBOARD_STATISTICS))
this._showDashboardStatistics = this.localStorage.getDataObject<boolean>(DBkeys.SHOW_DASHBOARD_STATISTICS);
if (this.localStorage.exists(DBkeys.SHOW_DASHBOARD_NOTIFICATIONS))
this._showDashboardNotifications = this.localStorage.getDataObject<boolean>(DBkeys.SHOW_DASHBOARD_NOTIFICATIONS);
if (this.localStorage.exists(DBkeys.SHOW_DASHBOARD_TODO))
this._showDashboardTodo = this.localStorage.getDataObject<boolean>(DBkeys.SHOW_DASHBOARD_TODO);
if (this.localStorage.exists(DBkeys.SHOW_DASHBOARD_BANNER))
this._showDashboardBanner = this.localStorage.getDataObject<boolean>(DBkeys.SHOW_DASHBOARD_BANNER);
}
private saveToLocalStore(data: any, key: string) {
setTimeout(() => this.localStorage.savePermanentData(data, key));
}
public import(jsonValue: string) {
this.clearLocalChanges();
if (!jsonValue)
return;
let importValue: UserConfiguration = Utilities.JSonTryParse(jsonValue);
if (importValue.language != null)
this.language = importValue.language;
if (importValue.homeUrl != null)
this.homeUrl = importValue.homeUrl;
if (importValue.theme != null)
this.theme = importValue.theme;
if (importValue.showDashboardStatistics != null)
this.showDashboardStatistics = importValue.showDashboardStatistics;
if (importValue.showDashboardNotifications != null)
this.showDashboardNotifications = importValue.showDashboardNotifications;
if (importValue.showDashboardTodo != null)
this.showDashboardTodo = importValue.showDashboardTodo;
if (importValue.showDashboardBanner != null)
this.showDashboardBanner = importValue.showDashboardBanner;
}
public export(changesOnly = true): string {
let exportValue: UserConfiguration =
{
language: changesOnly ? this._language : this.language,
homeUrl: changesOnly ? this._homeUrl : this.homeUrl,
theme: changesOnly ? this._theme : this.theme,
showDashboardStatistics: changesOnly ? this._showDashboardStatistics : this.showDashboardStatistics,
showDashboardNotifications: changesOnly ? this._showDashboardNotifications : this.showDashboardNotifications,
showDashboardTodo: changesOnly ? this._showDashboardTodo : this.showDashboardTodo,
showDashboardBanner: changesOnly ? this._showDashboardBanner : this.showDashboardBanner
};
return JSON.stringify(exportValue);
}
public clearLocalChanges() {
this._language = null;
this._homeUrl = null;
this._theme = null;
this._showDashboardStatistics = null;
this._showDashboardNotifications = null;
this._showDashboardTodo = null;
this._showDashboardBanner = null;
this.localStorage.deleteData(DBkeys.LANGUAGE);
this.localStorage.deleteData(DBkeys.HOME_URL);
this.localStorage.deleteData(DBkeys.THEME);
this.localStorage.deleteData(DBkeys.SHOW_DASHBOARD_STATISTICS);
this.localStorage.deleteData(DBkeys.SHOW_DASHBOARD_NOTIFICATIONS);
this.localStorage.deleteData(DBkeys.SHOW_DASHBOARD_TODO);
this.localStorage.deleteData(DBkeys.SHOW_DASHBOARD_BANNER);
this.resetLanguage();
}
private resetLanguage() {
let language = this.translationService.useBrowserLanguage();
if (language) {
this._language = language;
}
else {
this._language = this.translationService.changeLanguage()
}
}
set language(value: string) {
this._language = value;
this.saveToLocalStore(value, DBkeys.LANGUAGE);
this.translationService.changeLanguage(value);
}
get language() {
if (this._language != null)
return this._language;
return ConfigurationService.defaultLanguage;
}
set homeUrl(value: string) {
this._homeUrl = value;
this.saveToLocalStore(value, DBkeys.HOME_URL);
}
get homeUrl() {
if (this._homeUrl != null)
return this._homeUrl;
return ConfigurationService.defaultHomeUrl;
}
set theme(value: string) {
this._theme = value;
this.saveToLocalStore(value, DBkeys.THEME);
}
get theme() {
if (this._theme != null)
return this._theme;
return ConfigurationService.defaultTheme;
}
set showDashboardStatistics(value: boolean) {
this._showDashboardStatistics = value;
this.saveToLocalStore(value, DBkeys.SHOW_DASHBOARD_STATISTICS);
}
get showDashboardStatistics() {
if (this._showDashboardStatistics != null)
return this._showDashboardStatistics;
return ConfigurationService.defaultShowDashboardStatistics;
}
set showDashboardNotifications(value: boolean) {
this._showDashboardNotifications = value;
this.saveToLocalStore(value, DBkeys.SHOW_DASHBOARD_NOTIFICATIONS);
}
get showDashboardNotifications() {
if (this._showDashboardNotifications != null)
return this._showDashboardNotifications;
return ConfigurationService.defaultShowDashboardNotifications;
}
set showDashboardTodo(value: boolean) {
this._showDashboardTodo = value;
this.saveToLocalStore(value, DBkeys.SHOW_DASHBOARD_TODO);
}
get showDashboardTodo() {
if (this._showDashboardTodo != null)
return this._showDashboardTodo;
return ConfigurationService.defaultShowDashboardTodo;
}
set showDashboardBanner(value: boolean) {
this._showDashboardBanner = value;
this.saveToLocalStore(value, DBkeys.SHOW_DASHBOARD_BANNER);
}
get showDashboardBanner() {
if (this._showDashboardBanner != null)
return this._showDashboardBanner;
return ConfigurationService.defaultShowDashboardBanner;
}
}
Add the files
src/app/services/auth.service.ts
andsrc/app/services/configuration.service.ts
– Costamilam
Added changes
– Kaokan
Angular is not finding the file
db-Keys
, check the path and try to set an extension for it probably.ts
– Costamilam
Thanks for the help, db-Keys is a . ts and not a module, was being referenced in the import with capital letter, and the correct would be with minuscula letter db-Keys, in windows the compiler "ng b" did not find this inconsistency, but when buildar in linux he complained.
– Kaokan