Yii2在控制台中获取类型和参考错误

时间:2018-08-28 04:52:19

标签: javascript jquery yii2 yii2-advanced-app

我正在研究Yii2。在我的控制台中,我遇到两种错误。

  1.   

    未捕获的TypeError:无法读取未定义的属性'fn'   在bootstrap-show-password.min.js:6   在bootstrap-show-password.min.js:6

错误线,位于var i=e.fn.password;e.fn.password=function()......}(window.jQuery);的{​​{3}}

  1.   

    未捕获的ReferenceError:未定义$ st   在common.js:263

错误线,位于if ($st && $stats && blockingRules && setupUser && !window.forceReload)..的{​​{3}}

下面是我在main.php文件中的声明

<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">
<head>
<meta charset="<?= Yii::$app->charset ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?= Html::csrfMetaTags() ?>
<title><?= Html::encode($this->title) ?></title>
<?php $this->head() ?>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
<!-- Ionicons -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-show-password/1.0.3/bootstrap-show-password.min.js"></script>
</head>
<body class="hold-transition skin-blue sidebar-mini">
<?php $this->beginBody() ?>

更新1

main.php中的某些脚本

<script>
$(document).ready(function () {
    $('.listing-img').on('click', function () {
        $('#modal-img-tag').attr('src', $(this).attr('src'));
        $('#image-view-modal').modal();
    });
});
</script>
<script>
var data = [];
<?php foreach(\app\models\Roles::toArrayList() as $k=>$v){?>
data.push({id:<?=$k?>, text: '<?=$v?>'});
<?php } ?>
if($(".select2-selection").length>0) {
    $(".select2-selection").select2({
        data: data,
        allowClear: true,
        placeholder: "Select a Role",
        multiple: true
    });
}
</script>
<script src="https://cdn.rawgit.com/MrRio/jsPDF/master/dist/jspdf.min.js"> 
</script>
<div id="pdf-editor"></div>
</body>
</html>
<?php $this->endPage() ?>

我都在yii2/yii中搜索了两者,但找不到合适的解决方案

如何摆脱这些错误?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

在布局文件中,您将使用bootstrap-show-password.js标签添加<script>文件。

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-show-password/1.0.3/bootstrap-show-password.min.js"></script>

以及<head>部分中的内容,而默认情况下,如果您使用AssetManagerregisterJsFile,则会将脚本添加到页面底部</body>标记之前,并且bootstrap-show-password.js应该在jquerybootstrap js库之后而不是之前加载,请参见bootstrap-show-password

的演示的以下顺序
 <script src="assets/jquery.min.js"></script>
 <script src="assets/bootstrap-v2/js/bootstrap.js"></script>
 <script src="bootstrap-show-password.js"></script>

这就是您得到错误的原因

  

未捕获的TypeError:无法在读取未定义的属性'fn'   bootstrap-show-password.min.js:6,位于bootstrap-show-password.min.js:6

您的jquery和bootstrap加载到页面底部而不是页面顶部。

您应该将script标签替换为

$this->registerJsFile('https://cdnjs.cloudflare.com/ajax/libs/bootstrap-show-password/1.1.2/bootstrap-show-password.min.js',[
    'depends'=> \yii\bootstrap\BootstrapAsset::class
]);

,以便在引导程序库和jquery库之后加载文件。

关于另一个错误

  

未捕获的ReferenceError:common.js:263中未定义$ st

它与您的Chrome浏览器中安装的某些扩展程序有关,请查看您提供的链接,该链接会使用您可能会尝试使用其他浏览器(例如FF或IE)尝试使用该名称搜索chrome扩展程序的链接,因为演示网址未加载该特定网址使用chrome时对我来说是脚本,布局中的任何地方都没有包含文件common.js,也没有包含AssetManager文件。