1

我试图了解我用来创建 snap node.js 应用程序的 nodejs 插件如何处理 Node.js 环境?此应用程序中的示例:

parts:
  webserver: 
    source: .
    plugin: nodejs
    nodejs-version: "12.13.1"
    nodejs-package-manager: "yarn"
    nodejs-yarn-version: "v1.21.1"

我定义使用 Node.js v12.13.1 和 Yarn v1.21.1 午餐 snapcraft 命令:

snapcraft clean
snapcraft --debug

snap install my-snap-file.snap --dangerous

现在我可以在安装了 Node.js v12.2.0 的机器(amd64 Ubuntu 16.04 LTS)上运行命令/服务,但我找不到 node.js env 不在多通道实例中,不在另一台安装了 Ubuntu Core 18 的机器上,我的意思是我不能以 node --version 等方式运行命令,甚至 snap 应用程序也不能运行,既不能命令也不能服务。

我发现在 RaspBerry Pi3 上安装的 Ubuntu Core 18 环境中挖掘的其他问题是:当我在文件夹 /snap//bin 中安装我的带有 nodejs 应用程序的 snap 时,我无法运行 ./node exec!我得到错误:

./node: 1: ./node: Syntax error: "(" unexpected

我的问题是:

  • 为什么我得到 ./node 错误?
  • my-snap-file.snap 将 Node.js v12.3.1 捆绑在 mysnap 中?
  • 我如何测试 node.js 在 multipass 和其他我只安装了 snap 捆绑 node.js 的机器上使用正确的版本?

总价

4

1 回答 1

0

感谢 forum.snapcraft.io 我已经解决了这个问题......我在这里发帖也是为了帮助人们解决这些问题。此错误是由于快照未构建在您要运行它的实际目标架构上。确保您构建例如。armhf (raspberry pi3) 实际上在 armhf 架构设备上。

architectures: 
  - build-on: amd64 
    run-on: [amd64, armhf]

在这里,您告诉 snapcraft,在 amd64 上构建会生成可以在 amd64 和 armhf 上运行的二进制快照……这确实不是真的(因为在 amd64 上构建只会引入 amd64 二进制文件)。我会完全放弃该声明,并确保在 armhf 设备(或 build.snapcraft.io)上构建 armhf 版本。(学分奥格拉)

阅读 snapcraft.yaml 中关于架构的链接

https://forum.snapcraft.io/t/architectures/4972

于 2019-12-17T16:42:16.473 回答