2016-11-04 89 views
2

我尝试在我的应用程序中模拟请求,但是过程变量存在问题。我将process.env.backendUrl url存储在后端API中。然后在RestService我:Angular 2 testing - process.env

constructor(private http: Http) { 
    this.rest = process.env.backendUrl + "/api/"; 
} 

,现在是不可能的,因为在例如LoginComponent我有RestService依赖和我得到这个错误运行测试:

zone.js:140 Uncaught Error: Error in ./LoginComponent class LoginComponent_Host - inline template:0:0 caused by: process is not defined 
ReferenceError: process is not defined 
at new RestService (http://localhost:9876/base/src/test.ts:21595:2790) 
at DynamicTestModuleInjector.get (DynamicTestModule.ngfactory.js:170:67) 
at DynamicTestModuleInjector.get (DynamicTestModule.ngfactory.js:180:93) 
at DynamicTestModuleInjector.getInternal (DynamicTestModule.ngfactory.js:255:51) 
at DynamicTestModuleInjector.NgModuleInjector.get (http://localhost:9876/base/src/test.ts:25036:27) 
at TestBed.get (http://localhost:9876/base/src/test.ts:5589:51) 
at _View_LoginComponent_Host0.createInternal (LoginComponent_Host.ngfactory.js:16:74) 
at _View_LoginComponent_Host0.AppView.create (http://localhost:9876/base/src/test.ts:36192:21) 
at _View_LoginComponent_Host0.DebugAppView.create (http://localhost:9876/base/src/test.ts:36404:44) 

我设置proccess .env.backendUrl in enviroment.ts(由angular-cli创建的文件)。

process.env.backendUrl = 'http://localhost:8080'; 

export const environment = { 
    production: false 
}; 

我应该把它设置在别的地方还是有任何方法来告诉业力关于这个变量?

回答

6

如果您正在使用angular-cli,则应该将backendUrl添加到environment

export const environment = { 
    production: false, 
    backendUrl: 'http://localhost:8080' 
}; 

你也应该将其添加在environment.prod.ts文件,设置的URL网址生产。在生产时,将使用.prod文件。

在您的文件中,您应该导入environment(来自environment.ts文件),并使用environment.backendUrl

另请参见:

+0

谢谢你,它工作得很好 – Mossar