2
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;

class AppController extends Controller
{
  private function render() {
   $renderer_source = File::get(base_path('node_modules/vue-server-renderer/basic.js'));
   $app_source = File::get(public_path('js/entry-server.js'));

   $v8 = new \V8Js();

   ob_start();

   $v8->executeString('var process = { env: { VUE_ENV: "server", NODE_ENV: "production" }}; this.global = { process: process };');
   $v8->executeString($renderer_source);
   $v8->executeString($app_source);

   return ob_get_clean();
 }

 public function get() {
   $ssr = $this->render();
   return view('app', ['ssr' => $ssr]);
 }
}

I followed https://dzone.com/articles/server-side-rendering-with-laravel-amp-vuejs-25 this page and installed V8Js. But $v8->executeString($app_source); make an error that V8Js::compileString():14026: ReferenceError: window is not defined.

I have no idea how can I handle this error..

Aiden Kim
  • 123
  • 1
  • 7
  • there is no window object when server side rendering,check your code about where window object be used – jacky May 18 '18 at 09:08

1 Answers1

0

the problem was bootstrap.js using window object. THX!

Aiden Kim
  • 123
  • 1
  • 7