2017-06-09 61 views
1

Ionic + Angular + Cordova + Node jに基づいてモバイルアプリケーションを開発しています。nodejs環境変数 "NODE_EXTRA_CA_CERTS"

window.XMLHttpRequest介してアプリケーション訪問HTTPSサーバは:

module.exports = function request (method, url, body, headers) { 
    return new Promise(function (resolve, reject) { 
    var xhr = new window.XMLHttpRequest() 

    xhr.open(method, url) 

    xhr.onload = function() { 
     return resolve({ 
     status: xhr.status, 
     body: xhr.responseText 
     }) 
    } 

    xhr.onerror = xhr.onabort = function() { 
     return reject(new Error(xhr.statusText || 'XHR aborted: ' + url)) 
    } 

    Object.keys(headers).forEach(function (header) { 
     xhr.setRequestHeader(header, headers[header]) 
    }) 

    xhr.send(body) 
    }) 
} 

適切なルートCA、この機能を実行するためには、ノードの環境に挿入する必要があります。 私はhttps要求を行うコードを制御していないので、追加のルートCAをノードjsに有効にするポリシー/構成ベースのアプローチが好まれます。

私は検索して、そのノードが実際に私の目的に合うような環境変数 'NODE_EXTRA_CA_CERTS'を提供していることを知りました。

まだこの変数の使用方法に関する例は見つかりません。

私の実装は、npmパッケージdotenv-webpackをインストールすることです。

'NODE_EXTRA_CA_CERTS =。/ assets/cert/cacert.pem'(適切なルートCAへのファイルパス)という設定を含む.envファイルが追加されました。

変数NODE_EXTRA_CA_CERTSが正常に設定されたことを確認できます。それでも効果はないようです。セキュリティのためにサーバーへのアクセスが拒否されました。

私の質問:誰でも変数 'NODE_EXTRA_CA_CERTS'を利用する方法の例を教えてください。あなたはENVファイルでローカル変数を定義する必要はありませんので、あなたが話しているのenv変数は、「システム」レベルで提供される

おかげ

答えて

2

。あなたは変数にアクセスしたい場合は

は、あなたがdotenv-WebPACKの上、以下の構成を使用する必要があります。

Dotenv({ 
    systemvars: true 
}) 

は、これはシステムレベルの変数にアクセスできるようになります。変数にアクセスするには、変数:process.env.NODE_EXTRA_CA_CERTSを使用します。

  • processは、実行中のノードプロセスに関する情報を格納します。
  • envには、すべての環境変数(dotenv-webpackによってデータが格納される)が格納されます。 https://nodejs.org/api/process.html

    :あなたがここにprocessグローバル変数の詳細を読むことができ