NodeJS JWT Sign.sign TypeError:不是缓冲区

我目前正在研究一个应该在google日历中创build事件的node.js应用程序。 在我的机器上(OS X 10.9.2),它运行良好,但在另一台机器上(Debian 7 Wheezy 64位)却不起作用。 两者都安装了相同的node.js版本:v0.10.26。 我总是得到以下错误:

crypto.js:398 var ret = this._binding.sign(toBuf(key)); ^ TypeError: Not a buffer at Sign.sign (crypto.js:398:27) at createRS256Signature (/path/to/node_app/node_modules/googleapis/node_modules/gapitoken/node_modules/jws/index.js:75:58) at jwsRS256Sign (/path/to/node_app/node_modules/googleapis/node_modules/gapitoken/node_modules/jws/index.js:68:21) at Object.jwsSign [as sign] (/path/to/node_app/node_modules/googleapis/node_modules/gapitoken/node_modules/jws/index.js:32:12) at GAPI.getAccessToken (/path/to/node_app/node_modules/googleapis/node_modules/gapitoken/gapitoken.js:56:25) at GAPI.getToken (/path/to/node_app/node_modules/googleapis/node_modules/gapitoken/gapitoken.js:35:14) at JWT.refreshToken_ (/path/to/node_app/node_modules/googleapis/lib/auth/jwtclient.js:83:13) at /path/to/node_app/node_modules/googleapis/lib/auth/jwtclient.js:64:12 at /path/to/node_app/node_modules/googleapis/node_modules/gapitoken/gapitoken.js:20:17 at fs.js:266:14 

导致此错误的代码:

 this.jwt = new googleapis.auth.JWT( SERVICE_ACCOUNT_EMAIL, SERVICE_ACCOUNT_KEY_FILE, null, ['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.readonly']); 

SERVICE_ACCOUNT_KEY_FILE是我的.pem密钥文件的path,它也可以被应用程序find。

一切工作在本地,但不是在Debian机器上。 我必须安装一些依赖项或类似的东西吗?

编辑1:我也试过通过第三个参数作为string传递的关键,但是也没有工作。

谢谢!

我通过从文件中获取密钥,然后将其作为关键参数而不是密钥文件传递来解决此问题。 由于asynchronous文件访问问题,似乎密钥没有被读取。