'Is there any way to make an executable file (.exe) from a Nuxt+Node project?

I have a NuxtJS project that requires a NodeJS program running behind for some functions and logic. The project structure is as follows:

api
assets
components
layouts
middleware
pages
plugins
server
static
store
nuxt.config.js
package.json

nuxt.config.js

module.exports =  {
  head: {
    titleTemplate: '%s',
    title: 'Project',
    htmlAttrs: {
      lang: 'en'
    },
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: '' }
    ],
    link: [
      { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
    ]
  },

  css: [
    '@/assets/css/main.scss'
  ],

  plugins: [
  ],

  components: true,

  buildModules: [
    '@nuxtjs/vuetify'
  ],

  modules: [
    'nuxt-socket-io',
    'nuxt-i18n',
    '@nuxtjs/axios',
    '@nuxtjs/auth-next'
  ],

  io: {
    sockets: [
      {
        name: 'main',
        url: process.env.APP_SERVER_URL,
        default: true
      }
    ]
  },

  i18n: {
    locales: [
      {
        code: 'en',
        file: 'en-US.js'
      }
    ],
    lazy: true,
    langDir: 'lang/',
    defaultLocale: 'en'
  },

  serverMiddleware: [
    { path: '/api', handler: '~/api/index.js' },
  ],

  axios: {
    baseURL: process.env.APP_SERVER_URL,
  },

  vuetify: {
    customVariables: ['~/assets/variables.scss'],
    theme: {
      dark: true,
      themes: {
        dark: {},
        light: {}
      }
    }
  },

  build: {
    extend(config) {}
  }
}

package.json

{
  "name": "my-project",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "dev": "nodemon -w server -w nuxt.config.js server",
    "build": "nuxt generate",
    "start": "cross-env NODE_ENV=production node server",
    "generate": "nuxt generate"
  },
  "dependencies": {
    "@nuxtjs/auth-next": "5.0.0-1611574754.9020f2a",
    "@nuxtjs/axios": "^5.12.5",
    "body-parser": "^1.19.0",
    "core-js": "^3.8.3",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "http": "0.0.1-security",
    "moment": "^2.29.1",
    "nuxt": "^2.14.12",
    "nuxt-i18n": "^6.18.0",
    "nuxt-socket-io": "^1.1.14"
  },
  "devDependencies": {
    "@nuxtjs/vuetify": "^1.11.3",
    "cross-env": "^7.0.3",
    "nodemon": "^2.0.7"
  }
}

server/index.js

require('dotenv').config();

const isProd = process.env.NODE_ENV === 'production'
const http = require('http')
const app = require('express')()
const server = http.createServer(app)
const io = require('socket.io')(server)
const axios = require('axios')

const { Nuxt, Builder } = require('nuxt')
const config = require('../nuxt.config.js');
config.dev = !isProd;

const nuxt = new Nuxt(config)
const { host, port } = nuxt.options.server
if (config.dev) {
    const builder = new Builder(nuxt)
    builder.build()
} else {
    nuxt.ready()
}
app.use(nuxt.render)

server.listen(port, () => {
    console.log(`Server listening on http://${host}:${port}`)
});

// other logic

I need an exe that can be installed in other computers for running the Nodejs server and the Nuxt stuff, like I run the code by npm run dev or npm run build/start in the development computer locally.

I have tried nexe by running nexe -i server but not succeeded. Is there any other way for me to do that?

Thank you.



Solution 1:[1]

I think you can take a look at pm2. You can run node server and other stuff with that.

Solution 2:[2]

Compiling a Node.js Application into an .exe File

Two of the most commonly used packages used to compile JavaScript files into executables are:

nexe: It is a simple command-line utility that compiles your Node.js application into a single executable file. By default, it converts it into a Windows executable.

pkg: It is a Node.js package that can convert your Node.js app into several executable files for various operating systems (all at once) or of an individual operating system.

enter link description here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 mat33260
Solution 2 dev zarghami