在开发容器和电子中加载共享库时出错
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 -y
在package.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 中指定非默认共享库路径?运行时出现“加载共享库时出错”