捆绑 Quasar/Express/Electron 应用程序进行生产 - Express-server 无法启动

Posted

技术标签:

【中文标题】捆绑 Quasar/Express/Electron 应用程序进行生产 - Express-server 无法启动【英文标题】:Bundle Quasar/Express/Electron App for production - Express-server doesn't start 【发布时间】:2021-01-11 18:22:45 【问题描述】:

我正在构建一个应用程序,并且在我处于开发者模式时一切正常。 Everythink 可以正常工作。但是当我打包我的应用程序时,应用程序打开但它没有启动快速服务器。

对于开发测试,我在 bash 中运行 命令“node server.js”。现在我不知道 quasar.conf.js 或 package.json 中的正确设置 a) 在应用启动时启动 localhost 服务器,然后 b) 关闭应用时关闭本地主机并关闭

我读到的一件事是我可以安装 shelljs 并启动后端服务器,例如具有相同命令 node server.js 的 electron-main.js 文件。 我还发现了一个描述similar problem 的线程,但我还没有“构建”设置,并且不确定是否要更改电子打包器或生成器中“quasar.conf.js”中的任何内容或 package.json 中的某些内容

我很乐意提供任何提示,什么设置有效,最好在应用关闭时关闭服务器。

还有一个很好的资源来找到必要的设置和其他在使用 quasar/express/electron 从开发切换到生产时必须遵守的事项吗?

编辑: 我发现这可能很有价值thread。我认为 background.ts 现在转换为我的 electron-main.js 文件,我还不能正确。

克里斯干杯

package.json


"name": "App",
  "version": "0.0.1",
  "description": "A Quasar Framework app",
  "productName": "Quasar app",
  "author": "c",
  "private": true,
  "scripts": 
    "lint": "eslint --ext .js,.vue ./",
    "test": "echo \"No test specified\" && exit 0"
  ,
  "dependencies": 
    "@quasar/extras": "^1.0.0",
    "axios": "^0.20.0",
    "core-js": "^3.6.5",
    "cors": "^2.8.5",
    "jquery": "^3.5.1",
    "quasar": "^1.0.0"
  ,
  "devDependencies": 
    "@quasar/app": "^2.0.8",
    "babel-eslint": "^10.0.1",
    "devtron": "^1.4.0",
    "electron": "^9.3.1",
    "electron-debug": "^3.1.0",
    "electron-devtools-installer": "^3.1.1",
    "eslint": "^6.8.0",
    "eslint-config-prettier": "^6.9.0",
    "eslint-loader": "^3.0.3",
    "eslint-plugin-vue": "^6.1.2"
  ,
  "browserslist": [
    "last 10 Chrome versions",
    "last 10 Firefox versions",
    "last 4 Edge versions",
    "last 7 Safari versions",
    "last 8 android versions",
    "last 8 ChromeAndroid versions",
    "last 8 FirefoxAndroid versions",
    "last 10 iOS versions",
    "last 5 Opera versions"
  ],
  "engines": 
    "node": ">= 10.18.1",
    "npm": ">= 6.13.4",
    "yarn": ">= 1.21.1"
  

quasar.conf.js

  module.exports = function (/* ctx */) 
  return 
    boot: [
      'axios',
    ],

    css: [
      'app.sass'
    ],

    // https://github.com/quasarframework/quasar/tree/dev/extras
    extras: [
      'roboto-font', // optional, you are not bound to it
      'material-icons', // optional, you are not bound to it
    ],

    // Full list of options: https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build
    build: 
      vueRouterMode: 'hash', 
      extendWebpack (cfg) 
        cfg.module.rules.push(
          enforce: 'pre',
          test: /\.(js|vue)$/,
          loader: 'eslint-loader',
          exclude: /node_modules/
        )
      ,
    ,

    devServer: 
      https: false,
      port: 8080,
      open: true
    ,

    // https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework
    framework: 
      iconSet: 'material-icons', // Quasar icon set
      lang: 'en-us', // Quasar language pack
      config: ,

     

      // Quasar plugins
      plugins: ['LocalStorage', 'jquery']
    ,

    // animations: 'all', // --- includes all animations
    // https://quasar.dev/options/animations
    animations: [],

    // https://quasar.dev/quasar-cli/developing-s-s-r/configuring-s-s-r
    s-s-r: 
      pwa: false
    ,

    // https://quasar.dev/quasar-cli/developing-pwa/configuring-pwa
    pwa: 
      workboxPluginMode: 'GenerateSW', // 'GenerateSW' or 'InjectManifest'
      workboxOptions: , // only for GenerateSW
      manifest: 
        name: `Quasar App`,
        short_name: `Quasar App`,
        description: `A Quasar Framework app`,
        display: 'standalone',
        orientation: 'portrait',
        background_color: '#ffffff',
        theme_color: '#027be3',
        icons: []
      
    ,

    cordova: 

    ,

    capacitor: 
      hideSplashscreen: true
    ,

    // Full list of options: https://quasar.dev/quasar-cli/developing-electron-apps/configuring-electron
    electron: 
      bundler: 'packager', // 'packager' or 'builder'

      packager: 

      ,

      builder: 
        // https://www.electron.build/configuration/configuration

        appId: 'vuextest'
      ,

      // More info: https://quasar.dev/quasar-cli/developing-electron-apps/node-integration
      nodeIntegration: true,

      extendWebpack (/* cfg */) 
      
    
  

【问题讨论】:

【参考方案1】:

例如,您可能缺少package.json 中的启动脚本

...
"scripts": 
    "lint": "eslint --ext .js,.vue ./",
    "start": "node server.js",
    "test": "echo \"No test specified\" && exit 0"
  ,
...

npm start 是 node.js 应用程序启动的通常方式,它在脚本部分启动任务start。更多可以找到here

我不确定击落,但是当代码流完成执行并且不等待交互或任何东西时,它应该关闭整个 node.js 应用程序。

【讨论】:

您好 Zavael,感谢您的意见。我试过这个,但它没有改变任何东西。您有其他想法作为启动脚本或类似内容吗?我之前发现使用 shelljs 我可以从代码中调用它,但仍然在命令中。你知道我可以把它放在哪里吗? 我不确定shelljs,也许我会从一个简单的node.js + express helloworld 应用程序开始并部署它以查看它是否有效

以上是关于捆绑 Quasar/Express/Electron 应用程序进行生产 - Express-server 无法启动的主要内容,如果未能解决你的问题,请参考以下文章

捆绑在其他软件中安装 是啥意思

捆绑问题(angular2 + webpack 捆绑)

Webpack:如何使用动态捆绑组合两个完全独立的捆绑包

plist 捆绑版本值

当您的 Gemfile 需要旧版本的捆绑器时,如何“捆绑安装”?

新型紧固工具链条捆绑拉紧器——大型卷钢长途运输捆绑固定必备神器