在 Nativescript 中使用 Angular 5 的环境变量

Environment variables using in Nativescript with Angular 5

我想在 Angular 应用程序的本机脚本中使用环境数据。我遇到以下错误“ReferenceError: process is not defined”.

运行 申请

 npm run android --env.apiUrl="https://******.com/" --env.apiUserName="****" --env.apiPassword="*******"

Angular 服务

    import { } from 'node';
declare var process: any;

@Injectable()
export class CommonService {
  apiUrl: string;
  userName: string;
  password: string;
  platform: string;

  constructor ()  {


    this.apiUrl = (typeof process !== 'undefined' && process && process.env) ? process.env['apiUrl'] : '';
    this.userName = (typeof process !== 'undefined' && process && process.env) ? process.env['apiUserName'] : '';
    this.password = (typeof process !== 'undefined' && process && process.env) ? process.env['apiPassword'] : '';
    console.log('API URL-->' + this.apiUrl);
    console.log('API USERNAME-->' + this.userName);
    console.log('API PASSWORD-->' + this.password);
    console.log(process.env);

    if (isAndroid) {
        this.platform = 'android';
    } else if (isIOS) {
        this.platform = 'ios';
    }
  }

我无法将我在 运行 应用程序作为环境时传递的 apiuRL 、 apiUserName 和 apiPassword 。我已经提到了下面的 Whosebug 问题。但是,倒霉。任何人都可以帮助我如何从环境中获取这些数据。

我不是 nativescript 开发人员,但我知道 Angular 方法。

您可以使用 environment.tsenvironment.prod.ts,其中放置所有与环境相关的变量,如 apiUserName 和 apiUrl .. 等

在您的服务中,您应该导入环境并以打字稿正常方式使用它。

有关详细信息,请查看以下内容 link:https://alligator.io/angular/environment-variables/

希望这对您有所启发并解决您的问题。

更新

如果您使用的是 webpack,则可以在您的 webpack 配置中访问 process.env

modules.exports = (env) => {
    let apiUrl = env.apiUrl;
    return {
        entry: '', 
        ......
    }
}

现在,一旦您在 webpack 配置中访问了您的 env,您就有很多选择将它们传递给 angular 应用程序。

  1. 使用webpack.DefinePlugin(推荐)。 https://github.com/gdi2290/angular-starter/issues/386

  2. 使用 fs 写入 json 文件,然后在 angular 应用程序中使用 http.

  3. 读取文件