node.js - 无法在公司代理后面安装 tfjs-node
问题描述
我为对象检测制作了一个 tfjs 解决方案,并希望将其部署在公司代理后面的服务器上。
发生问题是因为tensorflow\tfjs-node\scripts\install.js
不支持代理,因此它尝试https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-cpu-windows-x86_64-1.15.0.zip
直接从服务器获取,这是不可能的。
我已经设置了我的 npm 配置
$npm config list
和 console.log 是:
; cli configs
metrics-registry = "http://registry.npmjs.org/"
scope = ""
user-agent = "npm/6.14.4 node/v12.18.0 win32 x64"
; userconfig C:\Users\user\.npmrc
https-proxy = "http://182.192.254.44:8080/"
proxy = "http://182.192.254.44:8080/"
python = "="
registry = "http://registry.npmjs.org/"
strict-ssl = false
; builtin config undefined
prefix = "C:\\Users\\user\\AppData\\Roaming\\npm"
; node bin location = C:\Program Files\nodejs\node.exe
; cwd = C:\IPA\beauty\TrackingServerProject
; HOME = C:\Users\usename
; "npm config ls -l" to show all defaults.
如您所见,由于代理,我得到了下一个错误。
$ npm install @tensorflow/tfjs-node
> @tensorflow/tfjs-node@2.0.1 install C:\IPA\beauty\TrackingServerProject\node_modules\@te
> node scripts/install.js
CPU-windows-2.0.1.zip
* Downloading libtensorflow
events.js:292
throw er; // Unhandled 'error' event
^
Error: connect ETIMEDOUT 64.233.189.128:443
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)
Emitted 'error' event on ClientRequest instance at:
at TLSSocket.socketErrorListener (_http_client.js:426:9)
at TLSSocket.emit (events.js:315:20)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
npm ERR! @tensorflow/tfjs-node@2.0.1 install: `node scripts/install.js`
我认为我可能需要更改tensorflow\tfjs-node\scripts\install.js
以添加代理?
请帮忙!
解决方案
3天后我设法让它工作了问题是在代理的定义中
tensorflow\tfjs-node\scripts\resources.js ( https://github.com/tensorflow/tfjs/blob/master/tfjs-node/scripts/resources.js )
第 40 和 41 行
const proxy = process.env['HTTPS_PROXY'] || process.env['https_proxy'] ||
process.env['HTTP_PROXY'] || process.env['http_proxy'] || '';
当以方式 1) 或 2) 定义代理时,它不会检测到process.env
npm config edit
.npmrc
因此,您需要以以下形式为 PowerShell 传递系统变量
$env:HTTP_PROXY="http://182.192.254.44:8080/"
或用于 CMD
HTTP_PROXY=http://182.192.254.44:8080/
所以它会起作用
只需输入:npm install @tensorflow/tfjs-node
然后享受!
推荐阅读
- python - 第一次循环后找不到文件或目录
- ruby-on-rails - Rails自引用表关联中基于角色的授权问题
- c# - 在 App.Config 文件中找不到名为“Inventory_ManagementEntities”的连接字符串”
- java - 使用重载但方法不返回值。有任何想法吗?
- c# - .NET Core WebAPI VueJS 模板发布问题
- android - 片段中的recyclerView水平问题
- android - 如何将 Genymotion 连接到 Android Studio 版本 3.5.3?
- flutter-web - 如何使用 Codemagic CI 构建和发布 Flutter Web 项目?
- vue.js - VueJS 路由器:确定第一个页面加载以禁用/更改页面转换
- python - 挑战任务以使用函数 find() 和 set()