首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel Mix和Turbolinks

Laravel Mix和Turbolinks
EN

Stack Overflow用户
提问于 2020-07-27 16:30:51
回答 3查看 1.3K关注 0票数 5

我有一些关于涡轮链接设置的问题。设置如下: Laravel Mix - with default: bootstrap,jquery,..)。就在bootstrap.js文件之后,我包含了turbolinks。一切工作,直到页面重新加载-在那里我总是得到错误。我做错了什么?

错误:

代码语言:javascript
复制
app.js:1282 Uncaught TypeError: $ is not a function
    at HTMLDocument.<anonymous> (app.js:1282)
    at Object.push../node_modules/turbolinks/dist/turbolinks.js.e.dispatch (vendor.js:105933)
    at r.notifyApplicationAfterPageLoad (vendor.js:105934)
    at r.visitCompleted (vendor.js:105934)
    at r.complete (vendor.js:105933)
    at r.<anonymous> (vendor.js:105933)
    at vendor.js:105933

出现错误的行:

代码语言:javascript
复制
document.addEventListener('turbolinks:load',function() {
    new SimpleBar(document.getElementsByClassName("js-simplebar")[0]);
    $(".sidebar-toggle").on("click", function() {
        //...
    });
});

编辑这里是js包含(编译- Laravel混合)

代码语言:javascript
复制
<head>
<script defer src="/js/manifest.js" data-turbolinks-track="true"></script>
<scrip`enter code here`t defer src="/js/vendor.js" data-turbolinks-track="true"></script>
<script defer src="/js/app.js" data-turbolinks-track="true"></script>
</head>

这是我的app.js:

代码语言:javascript
复制
require('./bootstrap');
let Turbolinks = require('turbolinks');
Turbolinks.start();

require("./dashboard");
require('./custom/INotifier').run();

require("./theme/bootstrap");
require("./theme/theme");

和bootstrap.js (包括jQuery、bootstrap js、axios等)

代码语言:javascript
复制
try {

window.Popper = require('popper.js').default;
window.$ = window.jQuery = require('jquery');
require('bootstrap');

} catch (e) {}

window.axios = require('axios');

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

回答 3

Stack Overflow用户

发布于 2020-07-30 03:12:42

在您已经显示的错误中,它被写成Uncaught TypeError: $ is not a function这个错误主要发生在调用它的脚本之前没有定义jQuery时。

通过下载jquery或通过cdn在turbolinks脚本之前,将jquery添加到html的head中,即

代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
票数 0
EN

Stack Overflow用户

发布于 2020-07-31 12:46:20

<script defer src="/js/app.js" data-turbolinks-track="true"></script>移至vendor.js之上,并从脚本标记中删除defer。在编写代码之前加载jquery

代码语言:javascript
复制
<head>
    <script src="/js/manifest.js" data-turbolinks-track="true"></script>
    <script src="/js/app.js" data-turbolinks-track="true"></script>
    <scrip src="/js/vendor.js" data-turbolinks-track="true"></script>
</head>
票数 0
EN

Stack Overflow用户

发布于 2020-08-05 16:01:59

试着把JQuery放在第一位,然后放在popper js上。

代码语言:javascript
复制
try {
window.$ = window.jQuery = require('jquery');
window.Popper = require('popper.js').default;
require('bootstrap');

} catch (e) {}

window.axios = require('axios');

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

这样说的原因是- https://getbootstrap.com/docs/4.0/getting-started/introduction/#js

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63111476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档