在开发容器和电子中加载共享库时出错

Posted

技术标签:

【中文标题】在开发容器和电子中加载共享库时出错【英文标题】:Error while loading shared libraries in dev containers and electron 【发布时间】:2021-07-24 05:33:33 【问题描述】:

问题

我在开发容器中有一个电子项目,每次我在开发容器中执行npm start 时都会收到此错误:

>ProjectName@1.0.0 start /workspaces/ProjectName
>electron .

/workspaces/ProjectName/node_modules/electron/dist/electron: error while loading shared libraries: libxshfence.so.1: cannot open shared object file: No such file or directory
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR! ProjectName@1.0.0 start:`electron .`
npm ERR! spawn ENOENT
npm ERR! 
npm ERR! Failed at the ProjectName@1.0.0 start script
npm ERR! This is probably not a problem with npm. There is likely additional logginh output above.

npm ERR! A complete log of this run can be found in:
npm ERR!   /home/node/.npm/_logs/2021-04-30T21_59_57_871Z-debug.log

访问 -> /home/node/.npm/_logs/2021-04-30T21_59_57_871Z-debug.log

我是怎么到这里的

(我在 Debain 10 顺便说一句)

    使用 VS Code 命令面板为节点 14 创建了一个远程容器 npm init -ypackage.json 中添加了启动脚本。 安装电子npm install --save-dev electron@latest

【问题讨论】:

确保容器中安装了 X11。从共享库 Electron 无法加载来看,这可能是问题所在。 (尚未发布作为答案,因为可能还有更多内容。) 非常感谢,我安装了那个库并执行了其他命令,它确实有效! 好的,所以我设法获得了所有需要的库,但现在我需要以某种方式在 --no-sandbox 中打开铬,但我不知道如何在开发容器中运行该模式,但我要去稍后发布该问题。 @AlexanderLeithner 我在下面发布了一个解决方案,但如果您可以发布它,我将删除我发布的临时解决方案! :D 没关系;您的答案比我可以发布的任何解决方案都要全面得多。干杯! 【参考方案1】:

此解决方案是在Alexander Leithner 的帮助下完成的。

问题与缺少某些库有关。

解决方案:

    在本地重新打开项目。

    并修改.devcontainer文件夹中的Dockerfile

    将以下行添加到文件中:

    RUN apt-get update && export DEBIAN_FRONTEND=noninteractive && apt-get -y install --no-install-recommends xorg openbox libnss3 libasound2 libatk-adaptor libgtk-3-0

    在开发容器中打开项目。

【讨论】:

以上是关于在开发容器和电子中加载共享库时出错的主要内容,如果未能解决你的问题,请参考以下文章

在 Python ctypes 中加载共享库期间出现分段错误(核心转储)

加载共享库时出错:libgfortran.so.1:无法打开共享对象文件:没有这样的文件或目录

ctags:加载共享库时出错:libgpm.so.1:无法打开共享对象文件:没有这样的文件或目录

如何在 GCC Linux 中指定非默认共享库路径?运行时出现“加载共享库时出错”

docker compose:加载共享库时出错:libz.so.1:无法从共享对象映射段:不允许操作

Rails:运行 wkhtmltopdf 时出错——(加载共享库时出错)