Vuejs SSR,Laravel和PHP V8J发出“窗口未定义”

时间:2018-05-22 21:02:43

标签: javascript php typescript laravel-5 vuejs2

我正在尝试按照https://medium.com/js-dojo/advanced-server-side-rendering-with-laravel-vue-multi-page-app-486b706e654在页面加载上呈现服务器端代码。一切正常,但是当我尝试使用全局变量“window”或“document”

我的app.js代码

import App from './components/App.vue';
import Vue from 'vue';
import { createRouter } from './router'
import { createStore } from './store'
import { sync } from 'vuex-router-sync'
require('./bootstrap');

bootstrap.js正常为

window.axios = require('axios');

window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

我需要全局axios,但php V8Js会出错 V8Js::compileString():612: TypeError: window is undefined

我发现V8Js没有浏览器变量,我尝试使用npm package browser-env但是得到了同样的错误。请参见屏幕截图http://nimb.ws/zGDmXO

谢谢

1 个答案:

答案 0 :(得分:1)

您必须摆脱windowsdocument的困扰,使用传递给JS的{​​{1}}字符串,因为它会寻找V8Js::executeString和{ {1}},但是在服务器端执行代码的时间并不存在。

在您的document中 做这样的事情:

window

,在后端则喜欢:

app.js

希望它会起作用