如何在命令行终端(vty)中运行电子二进制文件

时间:2018-05-08 10:14:09

标签: node.js centos electron electron-builder electron-packager

我用express.js创建了一个电子应用程序,用电子开发快速应用程序的原因是打包一个没有安装节点的可执行文件。

我成功地将应用程序打包在centos 7.如果我双击来自centos GUI的应用程序二进制文件,它运行正常。当我尝试使用命令行终端通过putty登录来运行它时,使用./app没有任何反应,我无法理解为什么。

有没有办法运行centos二进制文件,它是从putty的电子打包器登录生成的?

源代码如下,我以前打包的命令是npm run build

注意:当我尝试使用GUI终端使用./app运行它时,它再次正常工作

main.js

 const {app, BrowserWindow} = require('electron')
  const path = require('path')
  const url = require('url')

var express = require('express');
var _app = express();
const server = require('http').Server(_app);
let PORT = 3001;
_app.use(express.static(__dirname + '/public'));

server.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});

_app.get('/', (req, res) => {
    res.sendFile(__dirname + '/index.html');
});


  let win

  function createWindow () {
    win = new BrowserWindow({width: 800, height: 600})

    win.loadURL(url.format({
      pathname: path.join(__dirname, 'index.html'),
      protocol: 'file:',
      slashes: true
    }))

    win.webContents.openDevTools()

    win.on('closed', () => {
      win = null
    })
  }

  app.on('ready', createWindow)

  app.on('window-all-closed', () => {
    if (process.platform !== 'darwin') {
      app.quit()
    }
  })

  app.on('activate', () => {
    if (win === null) {
      createWindow()
    }
  })

的package.json

    {
  "name": "myapp",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "start": "electron .",
    "build": "electron-packager . app --platform linux --arch x64 --out dist/",
    "rpm64": "electron-installer-redhat --src dist/app-linux-x64/ --dest dist/installers/ --arch x86_64",
    "pack": "build --dir",
    "dist": "build"
  },
  "build": {
    "appId": "myapp",
    "category": "your.app.category.type",
    "dmg": {
      "contents": [
        {
          "x": 110,
          "y": 150
        },
        {
          "x": 240,
          "y": 150,
          "type": "link",
          "path": "/root/projects/myapp"
        }
      ]
    },
    "linux": {
      "target": [
        "AppImage",
        "deb"
      ]
    },
    "win": {
      "target": "squirrel",
      "icon": "build/icon.ico"
    }
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "electron": "^2.0.0",
    "electron-builder": "^20.11.1",
    "electron-installer-redhat": "^0.5.0",
    "electron-packager": "*",
    "electron-prebuilt": "*"
  },
  "dependencies": {
    "electron-terminal-open": "^0.1.1",
    "express": "^4.16.3"
  }

2 个答案:

答案 0 :(得分:0)

因为这是一个类似于应用程序的Web服务器,所以我能够将它与节点包一起部署到node.js操作系统不安装的地方,并且运行它没有任何问题。以下是步骤

在centos 7上的节点应用中,我使用npm i安装了所有依赖项 然后我将node.js linux二进制文件下载到app文件夹并tar.gz它。

然后我把它移到另一个没有安装节点的centos pc上。

我解压缩tar.gz文件并将PATH设置为node.js文件夹,在我的app文件夹中以下列方式PATH=$PATH:/path/to/my/app/node/bin

然后我运行npm start并且它运行正常,没有任何问题。我没有在这里使用电子,也无法用电子找到我的问题的答案。

答案 1 :(得分:0)

可以通过仅定义显示参数来实现。 在电子处理之前,请运行以下命令。

$ export DISPLAY =:0

./运行您的应用程序

这对我有用。

相关问题