好吧,虽然这并不理想(还),但我们目前正在通过 Synology 运行构建脚本。构建的一部分当然是安装所有软件包。但是,此时会发生很多错误。
我们安装使用:
npm ci --only=production(虽然与 相同的结果npm install)。并出现以下错误:
npm WARN tar zlib: invalid distance too far back
Run Code Online (Sandbox Code Playgroud)
(像很多很多次一样)在某处跟随:
291 verbose stack ZlibError: zlib: invalid distance too far back
291 verbose stack at Unzip.write (/usr/local/lib/node_modules/npm/node_modules/minizlib/index.js:147:22)
291 verbose stack at Unpack.write (/usr/local/lib/node_modules/npm/node_modules/tar/lib/parse.js:313:19)
291 verbose stack at PassThrough.ondata (_stream_readable.js:727:22)
291 verbose stack at PassThrough.emit (events.js:210:5)
291 verbose stack at addChunk (_stream_readable.js:309:12)
291 verbose stack at readableAddChunk (_stream_readable.js:290:11)
291 verbose stack at PassThrough.Readable.push (_stream_readable.js:224:10)
291 verbose stack at PassThrough.Transform.push (_stream_transform.js:150:32)
291 verbose stack at PassThrough.afterTransform (_stream_transform.js:94:10)
291 verbose stack at PassThrough._transform (_stream_passthrough.js:44:3)
291 verbose stack at PassThrough.Transform._read (_stream_transform.js:189:10)
291 verbose stack at PassThrough.Transform._write (_stream_transform.js:177:12)
291 verbose stack at doWrite (_stream_writable.js:431:12)
291 verbose stack at writeOrBuffer (_stream_writable.js:415:5)
291 verbose stack at PassThrough.Writable.write (_stream_writable.js:305:11)
291 verbose stack at PassThrough.ondata (_stream_readable.js:727:22)
292 verbose cwd /volume1/docker/builder/dockers/allsports.app/allsports.app.nginx/javascript
293 verbose Linux 3.10.105
294 verbose argv "/volume1/@appstore/Node.js_v12/usr/local/bin/node" "/usr/local/bin/npm" "ci"
295 verbose node v12.14.0
296 verbose npm v6.13.4
297 error code Z_DATA_ERROR
298 error errno -3
299 error zlib: invalid distance too far back
300 verbose exit [ -3, true ]
Run Code Online (Sandbox Code Playgroud)
从日志中可以看出,我的 Synology 正在使用节点 12.14 和 npm 6.13。我已经在我自己的电脑上用完全相同的版本进行了测试,并且运行流畅。
这是什么原因造成的,可以修复吗?
如https://github.com/nodejs/node/issues/22839#issuecomment所述,系统 Zlib 1.2.8(包含在 Synology 当前版本的 DSM 中)不适用于 Node v12 或 v10 中的 npm 474484250
Synology 早期版本的 Node(例如 v8)没有这个问题,npm 正常工作。我刚刚遇到了这个错误(npm什么也做不了Synology 上使用 Node v12有用的),并且退回到 Node v8 确实使问题消失了。
一种选择可能是使用 Entware 从源代码构建更新的 zlib,但我读过 Synology 支持甚至拒绝接触带有 ipkg/Optware/Entware 的系统。Zlib的变更日志表明 1.2.9 中有许多可移植性改进,但我不确定仅替换系统 zlib 是否会导致系统上的其他软件出现问题。
总的来说,如果您的构建脚本可以处理 Node 8(不幸的是它刚刚停产),我现在会坚持下去。否则官方/支持的答案可能是等待 Synology 对 DSM 的更新。
| 归档时间: |
|
| 查看次数: |
4859 次 |
| 最近记录: |