1

apn モジュール (https://github.com/argon/node-apn) を使用して、NodeJS から iPhone にプッシュ通知を送信しています。

私のコードは開発マシン (Mac OSX) で正常に動作し、Apple サンドボックス ゲートウェイ (gateway.sandbox.push.apple.com) を介して通知を正常にプッシュしていますが、それをステージング サーバー (Ubuntu を実行している) に移動するとプッシュします。通知は次のメッセージで失敗します。

 Error: ENOENT, no such file or directory 'apns-dev-cert.pem'

NodeJS apn オブジェクトを次のように設定しています。

var options = {
    cert: "apns-dev-cert.pem",          
    key:  "apns-key.pem",               
    passphrase: null,   
    gateway: "gateway.sandbox.push.apple.com",              
    port: 2195,                         
    enhanced: true,                     
    errorCallback: undefined,                       
    cacheLength: 5                                  
};

私の開発用 Mac OSX マシンでは、証明書はキーチェーンにインストールされています。Ubuntu についての私の限られた理解からすると、同等の方法は証明書ファイルを /etc/ssl/certs にコピーすることです。これを実行して、NodeJS コードでパスを「/etc/ssl/certs/apn-dev-cert.pem」に変更しようとしましたが、同じエラー メッセージが表示されます。

何か案は?

4

2 に答える 2

3

fsモジュールがファイルを読み取る方法を理解していなかったことに気付くまで、私はこの問題にかなり苦労しました。どうやら、ノードプロセスを開始したディレクトリからそれらを読み取ります。したがって、ファイルへのパスは、.pemそれを行っている場所に対して相対的でなければなりません。

あなたもチェックアウトしたいかもしれません。 これにより、パスを指定しやすくなります__dirname

于 2012-11-06T23:07:48.850 に答える