【问题标题】:Environment variables using in Nativescript with Angular 5在 Angular 5 中使用 Nativescript 的环境变量
【发布时间】:2018-10-11 11:26:40
【问题描述】:

我想将本机脚本中的环境数据与 Angular 应用程序一起使用。我面临以下错误“ReferenceError: process is not defined”。

运行应用程序

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

角度服务

    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 作为环境。我已经提到了下面的 StackOverflow 问题。但是,倒霉。任何人都可以帮助我如何从环境中获取这些数据。

stackoverflow link

【问题讨论】:

    标签: angular typescript angular5 angular2-nativescript


    【解决方案1】:

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

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

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

    更多详情请查看以下链接: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 文件,然后使用 http 在 Angular 应用程序中读取。

    【讨论】:

    • 没关系,但我想使用 process.env。任何想法
    • 您无权访问 Angular 应用程序中的 process.env。它仅在 Node.js 应用程序中对您可用。
    • 好的,我刚刚看到你更新的问题......你在使用 webpack 吗??
    • 是的。我使用 webpack
    • 嗨 Nour,这是我的 webconfig new webpack.DefinePlugin({ "global.TNS_WEBPACK": "true", 'process.env': { 'apiUrl': JSON.stringify(env && env. envtype ? env.envtype : ""), 'apiUserName': JSON.stringify(env && env.gmapsKey ? env.gmapsKey : ""), 'apiPassword': JSON.stringify(env && env.stripeKey ? env.stripeKey : ""), // 等等,这些只是例子 } }),
    猜你喜欢
    • 2018-09-24
    • 2018-09-04
    • 1970-01-01
    • 2017-11-27
    • 2018-03-16
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    相关资源
    最近更新 更多