注释
在 Linux 主机上,您可以使用以下 dockerfile 滚动图像
解释:1.9.20使用nodejs v8作为系统默认值,但是构建使用的electrum版本使用了与系统不兼容的较新的自定义nodejs版本。尝试运行图像时,它再次使用系统 nodejs,因此失败。上面的 dockerfile 针对与系统版本 (ABI 57) 兼容的旧 electrum 版本重新编译串行端口依赖项。 注意:此“修复”不适用于最新版本,因为最新版本将系统 nodejs 提升到 v10(ABI 64)并且电子中没有匹配的 ABI。 |
MacOS Sierra 10.12.6 – 错误:
尝试从 git 构建:
但不工作:
|
您是否尝试过直接在 Mac OS 上构建而不是使用 docker? 如果你在 Mac 上安装了 node 和 npm,你可以这样做: $ npm 安装 cncjs@latest 使用 docker 和 electron 只会给已经很复杂的构建过程增加一层复杂性——以及可能出错的地方。 实际上,很可能是以下快速安装说明#357(评论)也适用于 Mac OS。cncjs 构建过程创建了一组相当大的文件,这些文件是独立于平台的,唯一的例外是用于处理低级串行端口访问的依赖于平台的可执行文件。在 Raspberry Pi 上进行完整构建非常慢,而且经常由于资源耗尽而完全失败,所以我一直在寻找简化流程的方法。我确定了运行 cncjs 所需的最小文件集(在 Linux 下构建之后),然后创建了一个仅包含这些文件的 tarball。tarball 为 12 MB,与其他发行版映像相比很小。您可以在另一台机器上扩展该压缩包,然后为您的机器重建串口模块。在较慢的 Pi 上,它将 cncjs 更新时间从几小时减少到几分钟。 tarball 方法不会为您提供电子应用程序。您必须运行 cncjs 服务器,然后使用浏览器连接到它。对于那些不熟悉 Electron 的人来说,这是一种将 nodejs 服务器进程和浏览器捆绑在一个可执行文件中的方法。当您运行该可执行文件时,它会启动服务器进程和浏览器进程(与您可能已经运行的浏览器分开)并连接它们。它似乎是一个老式的应用程序,您可以在其中运行它并且 UI 会弹出 – 尽管在一段时间后会出现延迟,因为需要启动许多不同的(和大型的)程序。有很多地方可能出错。 |
如果您对使用 docker 方法死心塌地,我想我知道一种修复它的方法。您将需要以交互方式运行 docker 容器:
(注意没有 –rm 选项。使用该选项,将无法保存以下更改。) 然后,在运行的容器内:
回到 docker shell,您可以将更改保存到新图像:
然后运行新的 cncjs-fixed 图像。
可能有一种方法可以从 docker 命令行完成这一切,而不必进行交互,但我没有动力去弄明白。 |
我比较喜欢用docker,比起直接在nodejs上产生依赖问题或者降级包,用docker做测试好用多了
现在它可以工作但会产生一些错误;现在我可以对代码进行一些更改… |
任何更新?@voneiden的解决方案效果很好(版本 1.9.20),但我想更新我的容器以使用最新版本 (1.9.22) |
我采用了一种不同的方法,即暂时从 npm 存储库而不是源安装 cncjs 包。出于开发目的,这并不理想。但是,它将最新版本安装到容器中并正常运行。 例如: FROM node:lts
RUN export debian_frontend=NONINTERACTIVE \
&& apt-get update && apt-get install -y udev \
&& apt-get autoclean -y && apt-get autoremove -y \
&& npm i npm@latest -g \
&& npm install -g cncjs@latest --unsafe-perm
EXPOSE 8000/tcp
CMD ["/usr/local/bin/cncjs"]
|
只是一个参考点,我创建了 Dockerfile 基于@voneiden的推荐,而且看起来还不错。我以前遇到过同样的错误。
参考的 Dockerfile:
|
根据安装说明,我能够在节点 12 上运行最新版本 (1.9.22) 文件
编辑:更新 dockerfile 以安装 udev 依赖项并更新用户权限 |
如果能将它整合到https://hub.docker.com/r/cncjs/cncjs的“官方”Docker 容器中,那就太好了——我不确定 |
描述
Docker 镜像不启动,表示模块是针对不同的 Nodejs 版本编译的。
与 latest 和 v1.9.20 的结果相同(除了
NODE_MODULE_VERSION
s 不同)和 1.9.20:
版本
你如何安装CNCjs?
码头工人
硬件
操作系统