Angular 角形电缆E&;使用工厂开关
我正在尝试为Angular 4提供程序工厂设计一种模式,以便在运行Angular 角形电缆E&;使用工厂开关,angular,protractor,angular-cli,Angular,Protractor,Angular Cli,我正在尝试为Angular 4提供程序工厂设计一种模式,以便在运行ng e2e时切换使用的实现 我已经研究过如何在angular cli中进行一些操作,但是遇到了ng serve-e e2e $ ng serve -e e2e Cannot read property 'length' of undefined TypeError: Cannot read property 'length' of undefined at createSourceFile (/home/user/Doc
ng e2e
时切换使用的实现
我已经研究过如何在angular cli中进行一些操作,但是遇到了ng serve-e e2e
$ ng serve -e e2e
Cannot read property 'length' of undefined
TypeError: Cannot read property 'length' of undefined
at createSourceFile (/home/user/Documents/workspace/ngproj/node_modules/typescript/lib/typescript.js:15457:109)
at parseSourceFileWorker (/home/user/Documents/workspace/ngproj/node_modules/typescript/lib/typescript.js:15389:26)
at Object.parseSourceFile (/home/user/Documents/workspace/ngproj/node_modules/typescript/lib/typescript.js:15338:26)
at Object.createSourceFile (/home/user/Documents/workspace/ngproj/node_modules/typescript/lib/typescript.js:15192:29)
at VirtualFileStats.getSourceFile (/home/user/Documents/workspace/ngproj/node_modules/@ngtools/webpack/src/compiler_host.js:66:35)
at WebpackCompilerHost.getSourceFile (/home/user/Documents/workspace/ngproj/node_modules/@ngtools/webpack/src/compiler_host.js:213:38)
at findSourceFile (/home/user/Documents/workspace/ngproj/node_modules/typescript/lib/typescript.js:67909:29)
at processImportedModules (/home/user/Documents/workspace/ngproj/node_modules/typescript/lib/typescript.js:68056:25)
at findSourceFile (/home/user/Documents/workspace/ngproj/node_modules/typescript/lib/typescript.js:67937:17)
at processImportedModules (/home/user/Documents/workspace/ngproj/node_modules/typescript/lib/typescript.js:68056:25)
at findSourceFile (/home/user/Documents/workspace/ngproj/node_modules/typescript/lib/typescript.js:67937:17)
at processImportedModules (/home/user/Documents/workspace/ngproj/node_modules/typescript/lib/typescript.js:68056:25)
at findSourceFile (/home/user/Documents/workspace/ngproj/node_modules/typescript/lib/typescript.js:67937:17)
at processSourceFile (/home/user/Documents/workspace/ngproj/node_modules/typescript/lib/typescript.js:67840:27)
at processRootFile (/home/user/Documents/workspace/ngproj/node_modules/typescript/lib/typescript.js:67728:13)
at /home/user/Documents/workspace/ngproj/node_modules/typescript/lib/typescript.js:67018:60
const authFactory = (http) => {
if (environment.useRestApi) {
console.log('Using HTTP REST Api')
return new HttpAuthService(http);
} else {
console.log('Using In Memory REST Api')
return new InMemoryAuthService();
}
};
@NgModule({
imports: [
CommonModule,
HttpModule
],
declarations: [],
providers: [
{
provide: AuthService,
useFactory: authFactory,
deps: [Http]
}
]
})
export class AuthModule {
}
忽略这一特定问题,是否有人有基于cli参数或特定环境(例如通过ng e2e
检测应用程序正在运行)的提供商工厂和切换实现的良好模式
我对使用MockBackend
/MockConnection
不感兴趣(我在.spec.ts文件中使用了它们来测试HttpAuthService
)
堆栈跟踪更新
堆栈跟踪是由my.angular-cli.json文件中的键入错误引起的:
"environments": {
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts",
"e2e": "environments/environments.e2e.ts"
}
这里引用的e2e文件在文件名中有一个额外的“s”。与往常一样,ng cli/webpack/ts/node以一种明显的方式告诉我这一点,这确实是件好事
我仍然对其他选择持开放态度,所以我将把这作为一个更新而不是一个答案(希望那些尚未回答的问题可能会引起更多的兴趣),但同时,使用一个环境对我来说是可行的