Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vite Build for Production Yields Vue Not Found #5

Open
secondmanveran opened this issue Jan 19, 2022 · 1 comment
Open

Vite Build for Production Yields Vue Not Found #5

secondmanveran opened this issue Jan 19, 2022 · 1 comment

Comments

@secondmanveran
Copy link

I've built up my SSR config and it runs locally, I see the ssr rendering inside the #app element.

But when I build this ssr.js file in Github Actions, then send it to Forge, it won't run.

Error thrown:

node:internal/modules/cjs/loader:936
  throw err;
  ^

Error: Cannot find module 'vue'
Require stack:
- /home/forge/example.com/public/render/ssr.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/home/forge/example.com/public/render/ssr.js:21:11)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/home/forge/example.com/public/render/ssr.js' ]
}

How do I alias vue in my ssr config when there's no node_modules dir on the production server? Or do I just not alias anything?

My vite.ssr.config.js looks like so:

const dotenv = require('dotenv')
const expandDotenv = require('dotenv-expand')

import { defineConfig } from 'vite'
import Components from 'unplugin-vue-components/vite'
import AutoImport from 'unplugin-auto-import/vite'
import { resolve } from 'path'
import vue from '@vitejs/plugin-vue'

const env = expandDotenv.expand(dotenv.config()).parsed

export default defineConfig(() => ({
  publicDir: false,
  build: {
    ssr: true,
    target: 'node17',
    outDir: 'public/render',
    rollupOptions: {
      input: 'resources/js/ssr.js',
    },
  },
  resolve: {
    alias: {
      '@': resolve(__dirname, 'resources/js'),
      '/storage': resolve(__dirname, 'storage/app/public'),
      vue: resolve(__dirname, 'node_modules/vue/index.js'),
      ziggy: resolve(__dirname, 'vendor/tightenco/ziggy/dist/index.es.js'),
      zora: resolve(__dirname, 'vendor/serenity/zora/dist/ssr.js'),
      composable: resolve(__dirname, 'resources/js/Composable/index.js'),
    },
  },
  plugins: [
    vue(),
    AutoImport({
      include: [
        /\.vue$/,
        /\.vue\?vue/, // .vue
        /\.md$/, // .md
      ],
      imports: [
        'vue',
        'vuex',
        {
          '@inertiajs/inertia': ['Inertia'],
          '@inertiajs/inertia-vue3': ['useForm', 'usePage', 'useRemember'],
          composable: ['useTrans', 'useRoutes'],
        },
      ],
    }),
    Components({
      dirs: ['resources/js/Components'],
      extensions: ['vue'],
      deep: true,
      resolvers: [],
      dts: false,
      directoryAsNamespace: false,
      globalNamespaces: [],
      directives: true,
      include: [/\.vue$/, /\.vue\?vue/],
      exclude: [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/, /[\\/]\.nuxt[\\/]/],
    }),
  ],
}))

As I said, this configuration works perfectly on my local machine, where all my versions match production.

Local:

Mac osMonterey 12.1
Laravel Valet using PHP 8.1.1
Node 16.13.2
Npm 8.1.2

Remote:

Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-96-generic x86_64)
PHP: 8.1.1
Node: 16.13.2
Npm: 8.1.2

Need some assistance.

@secondmanveran
Copy link
Author

@claudiodekker

Any chance I can get some feedback on this?

Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant