laravel out of box vuejs示例不起作用

问题描述 投票:0回答:2

我只是试图用laravel学习vuejs并且无法使示例组件工作。

我已经创建了一条新的路线来简单地为vue示例提供服务。

create.blade.php

<!DOCTYPE html>
<html>
<head>
<title>VUE</title>
</head>

<body>

<h1>example</h1>

<div id="app">

<example></example>

</div>

<script src="/js/app.js"></script>
</body>
</html>

app.js和example.vue文件完全一样开箱即可(所以我不打算在这里显示example.vue

require('./bootstrap');

window.Vue = require('vue');

Vue.component('example', require('./components/Example.vue'));

const app = new Vue({
    el: '#app'
});

我有npm run watch运行,似乎已经建立了应用程序文件确定。

控制器和路由是正常的,因为页面正在加载,但我得到控制台错误如下

app.js:1697 Uncaught TypeError: Cannot read property 'csrfToken' of 
undefined
at Object.<anonymous> (app.js:1697)
at __webpack_require__ (app.js:20)
at Object.<anonymous> (app.js:778)
at __webpack_require__ (app.js:20)
at Object.<anonymous> (app.js:41430)
at __webpack_require__ (app.js:20)
at app.js:66
at app.js:69

当我点击chrome中的控制台错误时,它指向app.js中的行:

window.axios.defaults.headers.common['X-CSRF-TOKEN'] = 
window.Laravel.csrfToken;

它是否抱怨csrftoken因为我用它作为刀片模板?我怎样才能让它在laravel中工作,这样我才能玩耍并学习vuejs?

laravel vue.js
2个回答
2
投票

它抱怨的代码是在resources/assets/js/bootstrap.js源代码中,您将看到它在app.js文件的顶部被引用。在刀片文件中,在包含app.js之前,可以设置csrf标记值。

<script>
    window.Laravel.csrfToken = {{ csrf_token() }};
</script>
<script src="/js/app.js"></script>

或者,或者,如果您要做的就是按原样播放示例,您可以从bootstrap.js中删除该行代码。但是一旦你开始更多地使用VueJS,你可能会需要它。


0
投票

我认为最好使用以下内容修改bootstrap.js文件(在axios导入行之后):

window.axios.defaults.headers.common = {
    'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
    'X-Requested-With': 'XMLHttpRequest'
};
© www.soinside.com 2019 - 2024. All rights reserved.