【问题标题】:Laravel is not definedLaravel 没有定义
【发布时间】:2017-01-01 10:46:51
【问题描述】:

我正在使用新的 laravel 5.3 和 vue.js,我想对我的数据库中的一些用户进行 GET 调用

顺便说一句,我正在使用组件。

这是我的 app.js

require('./bootstrap');

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

const app = new Vue({

    el: 'body',

});

这是我的组件 User.vue 我出于帖子大小的原因将 HTML 模板省略了,如果需要我可以发布它

<script>

    export default{

        data : function () {
            return {
                users : ''
            }
        },

        methods: {


            fetchUser: function () {

                var vm = this;

                vm.$http.get('user/', function (data) {
                   vm.$set('users', data)
                })

            }
        },
        ready() {

            this.fetchUser();
        },

    }
</script>

我在控制台中遇到 2 个错误

 vue-resource.common.js?d39b:27 0ReferenceError: Laravel is not defined(…)

(program):29 Uncaught (in promise) ReferenceError: Laravel is not defined(…)

这是我的 package.json,正如你所见,我拥有所有可以使用 vue 和 vue 资源的部门

{
  "private": true,
  "scripts": {
    "prod": "gulp --production",
    "dev": "gulp watch"
  },
  "devDependencies": {
    "bootstrap-sass": "^3.3.7",
    "gulp": "^3.9.1",
    "jquery": "^3.1.0",
    "laravel-elixir": "^6.0.0-9",
    "laravel-elixir-vue": "^0.1.4",
    "laravel-elixir-webpack-official": "^1.0.2",
    "lodash": "^4.14.0",
    "vue": "^1.0.26",
    "vue-resource": "^0.9.3"
  }
}

希望有人可以在这里帮助我。谢谢

【问题讨论】:

  • 你能显示你的./bootstrap.js。变量/常量Laravel 在没有被初始化的情况下被使用。
  • @NEOJPK,你能发布你的 HTML 模板吗?我也在玩同样的。所以它会帮助我学习。
  • 我不再拥有它了,伙计。但我认为他们修复了它。去从作曲家那里获取最新版本。然后 npm install

标签: javascript php laravel npm vue.js


【解决方案1】:

或者为了更简洁的格式:

<script>
    window.Laravel = { csrfToken: '{{ csrf_token() }}' };
</script>

和 Rocco 的回答一样。

【讨论】:

  • 您能否在此答案中添加更多详细信息,为什么我们需要这样做?
  • 它更干净。
  • 听说 laravel 需要这个来提供安全性
  • 我听说 Laravel 使用它来提供安全性。特别是,我们可以在使用 AJAX 作为身份验证令牌时使用它。
  • @Danish 是的,这是真的。如果您使用 axios,例如 Laravel 5.4 的“推荐”ajax 库,您可以定义一个拦截器,例如:axios.interceptors.request.use((config) =&gt; { config.headers['X-CSRF-TOKEN'] = Laravel.csrfToken; config.headers['X-REQUESTED-WITH'] = 'XMLHttpRequest'; //for flagging req as ajax return config; });,因为这将为每个 ajax 请求发送令牌。这个拦截器默认带有最新的框架版本。
【解决方案2】:

试着把它放在你的刀片上,你可以看到它在 Laravel 5.3 的 app.blade 上默认插入

<script>
    window.Laravel = <?php echo json_encode([
        'csrfToken' => csrf_token(),
    ]); ?>
</script>

【讨论】:

  • 我也遇到过类似的问题,确实是这样解决的!谢谢!
【解决方案3】:

如果您使用的是 axios,请确保在导入 axios 后您的 bootstrap.js 文件中包含以下内容:

window.axios.defaults.headers.common = {
    'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
    'X-Requested-With': 'XMLHttpRequest'
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-11
    • 2017-09-08
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 2020-04-20
    • 2017-05-18
    • 2021-10-26
    相关资源
    最近更新 更多