Docker的Node-sass构建问题

问题描述

我正在Docker中进行容器化Angular 5应用程序。该应用程序使用node-sass 4.7.2。该应用程序在Windows环境中运行良好。在“ npm install”过程中,它将下载节点-sass或使用.npmrc文件中定义的sass-library-path来构建它。

但是,在Docker映像创建过程中存在很多问题。它会自动尝试从https://github.com/sass/node-sass/releases/download/v4.7.2/linux-x64-72_binding.node下载binding.node文件 但是,没有针对linux-x64-72的发行版。因此,它会下载一个虚拟文件(大小约为4KB),并引发“无效的ELF标头”错误

如果我在sass-binary-path(https://github.com/sass/node-sass/releases/download/v4.7.2/linux-x64-59_binding.node)中指定了一些有效的URL,则会引发“找不到模块”错误

我也尝试过npm rebuild node-sass。我也从互联网上看到了很多答案。许多答案建议我从本地环境复制节点模块。要知道,这对于Docker来说从来都不是一种选择。我不能要求开发人员也在存储库中提交节点模块。

有什么办法可以解决此问题?还是有一些简单的解决方案可以在角度应用程序中解决,例如不使用node-sass?

解决方法

package.json 中指定了 node sass 版本。对于对应的 node-sass 版本,os linux-x64-72_binding.node 没有可用的库。 因此,我升级了可用 Linux 库的 package.json 中的 node-sass 版本。

然后,它毫无问题地下载了文件。