使用代理后面的节点gyp安装bcrypt

时间:2018-11-20 09:09:48

标签: node.js npm bcrypt node-gyp

我在自己的nodejs应用程序bcrypt npm软件包中使用了身份验证/加密密码。问题出在代理服务器上。由于代理阻止了预构建二进制文件的安装:

node-pre-gyp WARN Pre-built binaries not installable for bcrypt@3.0.0 and node@8.12.0 (node-v57 ABI, glibc) (falling back to source compile with node-gyp)
node-pre-gyp WARN Hit error connect ECONNREFUSED 10.254.3.15:443

我已将npm代理配置为:

npm config set registry http://proxy-url

但是看起来node-pre-gyp从其他地方安装了依赖项,但它不使用代理,因此会失败。所有其他npm软件包都可以安装。我试图搜索所需的预构建库,但没有任何具体解决方案。知道如何克服这个问题吗?

2 个答案:

答案 0 :(得分:0)

  

遵循这些步骤

在路径C:\ Users \ Administrator下手动创建 binding.gyp 文件,其内容如下:

{
"targets": [
{
"target_name": "binding",
"sources": [ "build/Release/binding.node" ]
}
]
}

然后,我运行 node-gyp rebuild 命令,问题就解决了。

答案 1 :(得分:0)

我有同样的问题,node-gyp无法连接(在npm install bcrypt期间)。通常,npm使用http-proxy变量来设置软件包,而gyp使用代理变量。

Dio getAuthenticatedDio() { authenticatedDio.interceptors.clear(); authenticatedDio.interceptors.add(BearerInterceptor(oauth)); authenticatedDio.interceptors .add(InterceptorsWrapper(onRequest: (RequestOptions options) async { return options; //continue }, onResponse: (Response response) async { print(response); return response; // continue }, onError: (DioError e) async { print(e); if (e.response.statusCode == 401) { authenticatedDio.interceptors.requestLock.lock(); authenticatedDio.interceptors.responseLock.lock(); return oauth.refreshAccessToken().whenComplete(() { authenticatedDio.interceptors.requestLock.unlock(); authenticatedDio.interceptors.responseLock.unlock(); return authenticatedDio.request(e.request.path, options: e.request); }); } return e; })); return authenticatedDio;}

对我来说很好。