5

我正在尝试使用 V8Js 在 Laravel 中使用 VueJS 和 VueRouter 实现 SSR,但我一直遇到这个错误:

V8JsScriptException
V8Js::compileString():1812: ReferenceError: document is not defined

import App from './app'
import Vue from "vue";
import router from "./router";

let app = new Vue(App);

Vue.config.productionTip = false;
// @ts-ignore
export default new Promise((resolve, reject) => {
  // @ts-ignore
  router.push(url);
  router.onReady(() => {
    const matchedComponents = router.getMatchedComponents();
    if (!matchedComponents.length) {
      return reject({
        code: 404
      });
    }
    resolve(app);
  }, reject);
}).then(app => {
  // @ts-ignore
  renderVueComponentToString(app, (err, res) => {
    // @ts-ignore
    print(res);
  });
}).catch((err) => {
  // @ts-ignore
  print(err);
});

      ...

      $js =
            <<<EOT
            var process = { env: { VUE_ENV: "server", NODE_ENV: "production" } }; 
            this.global = { process: process }; 
            var url = "$path";
EOT;
        $v8 = new \V8Js();

        $v8->executeString($js);
        $v8->executeString($renderer_source);

        $v8->executeString($app_source);
        $markup = ob_get_clean();
        return $markup;

       ...

我知道,在 SSR 中没有窗口或文档,但我不知道我的错误在哪里。如果还需要详细信息我可以提供,谢谢。

4

0 回答 0