composer安装yii2.0.6后,运行提示vendor\bower/jquery/dist文件不存在

今天想要试试yii2.0,安装使用的composer

composer global require "fxp/composer-asset-plugin:~1.0.0"
composer create-project --prefer-dist yiisoft/yii2-app-basic basic

通过以上安装,成功完成了yii2.0的安装,但是在运行
http://localhost/basic/web/index.php
后,报了以下错误:

The file or directory to be published does not exist: D:\xampp\htdocs\basic\vendor\bower/jquery/dist

通过查看文档,我发现在vendor\bowerjquery\dist目录中确实不存在dist,正确目录是:vendor/bower/bower-asset\jquery\dist
但是不知道在哪里进行相应配置。

初学者,请大家给予知道一下

阅读 13.4k
评论
    9 个回答

    不需要怎么麻烦,只要对定义 @bower的地方做下修改就好了。

    vim htdoc/vendor/yiisoft/yii2/base/Application.php
    :456行

        // 注释掉
        //        Yii::setAlias('@bower', $this->_vendorPath . DIRECTORY_SEPARATOR . 'bower');
        // 替换成
                Yii::setAlias('@bower', $this->_vendorPath . DIRECTORY_SEPARATOR . 'bower' . DIRECTORY_SEPARATOR . 'bower-asset');
      • 1.3k

      其实之前composer安装的也是和你下载的一样,安装在vendor/bower/下,不知道为啥,这次用composer会多出这一级目录

      =================

      2015年11月30日 补充:
      不建议按照 @ThemisMin 的方法修改源码,官方给的解决办法是降级composer

      composer self-update 1.0.0-alpha11
      composer clear-cache

      重新执行composer创建YII2

        升级composer到最新版

        composer self-update
        

        在升级升级composer-asset-plugin到1.1.1

        composer global require "fxp/composer-asset-plugin:~1.1.1"
        

        在重新composer install

          • 387

            自己解决了,这个问题。现在把答案在这里说一下,
            通过对比composer的项目,与直接下载的项目(可直接运行)。主要区别是在 vendor/bower 这个目录

            composer安装的项目该目录结构:
            图片描述

            直接下载的项目该目录结构:
            图片描述

            对比发现composer安装的项目,多了一级 bower-asset 目录,所以在运行:http://localhost/basic/web/index.php 时,报错说相关的jquery与bootstap文件找不到。

            分析到这里,很明白就是代码相应资源的路径有问题,所以只要解决相应的资源路径即可。
            yii2.0.6中管理jquery资源的类是:yii\web\JqueryAsset
            代码如下:

            class JqueryAsset extends AssetBundle
            {
                public $sourcePath = '@bower/jquery/dist';
                public $js = [
                    'jquery.js',
                ];
            }

            将其$sourcePath更改为:@bower/bower-asset/jquery/dist即可。
            然后修改bootstrap相关路径,非常类似,需要修改的三个类,分别是:

            • yii\bootstrap\BootstrapAsset

            • yii\bootstrap\BootstrapPluginAsset

            • yii\bootstrap\BootstrapThemeAsset

            注意:上面所有的类都是命名空间,而不是实际路径,至于实际路径,可参考对应的自动加载文件找到。

              安装:

              composer global require "fxp/composer-asset-plugin:~1.1.1"
              
              composer create-project --prefer-dist yiisoft/yii2-app-basic basic

                我今天遇到同样的问题

                我两天电脑,一台是最初的开发机器,然后配置了一台新电脑,一样的环境,composer install之后,vendor目录出现了bower-asset目录,而没有bower,也报错,同样的错误信息

                The file or directory to be published does not exist: D:xampphtdocsbasicvendorbower/jquery/dist

                然后呢,我看了一下报错信息,确实是bower这个目录的问题,就手动把bower-asset目录改为bower,就可以了。

                  • 2
                  • 新人请关照

                  这个问题我看了下,历史比较悠久了, 今天也踩到了这个坑, 不想手动改目录, 改源码等方式进行修正.后来看了下官网http://www.yiiframework.com/d... 果断通过composer 升级进行修改

                  //本人ubuntu系统
                  composer self-update //升级到最新
                  //官网找到最新下面的这行执行.
                  composer global require "fxp/composer-asset-plugin:^1.4.1"  
                  //执行完毕, 项目目录删除vender, 重新composer install,搞定
                    • 116

                    参考basic模板,只要在项目的配置中增加别名就行了:

                    clipboard.png

                      正解,可以解决前端资源找不到路径的问题,这比修改源码好

                        撰写回答

                        登录后参与交流、获取后续更新提醒

                        相似问题
                        推荐文章