当我使用CodeSleeve资产管道打开串联时,Javascript无法正常工作(Laravel 4)

时间:2014-02-20 13:49:32

标签: javascript asset-pipeline

我成功获得了需要我所有各种javascript和css的Codesleeve Asset Pipeline(https://github.com/CodeSleeve/asset-pipeline)。

我的问题是,当我打开连接时,我的javascript完全中断了。我有点像js的菜鸟,但我认为我已经很明智地建造了东西。

任何帮助都会有很大帮助。

以下是来自控制台的错误:

(基本上以前定义的一堆东西现在未定义,不知道为什么?!)

  • 未捕获的TypeError:undefined不是函数application.js:19
  • 未捕获的ReferenceError:Highcharts未定义exports.js:22
  • 未捕获TypeError:对象[object Object]没有方法'plugin'

当concat关闭时,以下是我的JS文件:

(一切正常如此)

<script src="http://mysite.dev/assets/jquery-183.min.js" ></script>
<script src="http://mysite.dev/assets/detail-admin201/bootstrap.min.js" ></script>
<script src="http://mysite.dev/assets/detail-admin201/jquery-ui-1.10.2.custom.min.js" ></script>
<script src="http://mysite.dev/assets/theme.js" ></script>
<script src="http://mysite.dev/assets/datepicker.js" ></script>
<script src="http://mysite.dev/assets/select2.min.js" ></script>
<script src="http://mysite.dev/assets/pnotify.min.js" ></script>
<script src="http://mysite.dev/assets/jquery.watable.js" ></script>
<script src="http://mysite.dev/assets/number.min.js" ></script>
<script src="http://mysite.dev/assets/jquery.my.plugin.js" ></script>
<script src="http://mysite.dev/assets/highcharts.js" ></script>
<script src="http://code.highcharts.com/modules/exporting.js" ></script>
<script>
    var options = {plugins various options i supply blah blah};
    jQuery(function($){
        // Initialize our plugin
        $("#element").plugin(options);
    });
</script>

如果有任何其他信息有用,请告诉我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

当你打开串联时,你是否也开始缩小?如果是这样,缩小可能会破坏你的代码。

如果您只是打开和关闭串联,那么可能发生的是您正在包含一些javascript(可能是第三方脚本),它具有自调用函数而没有分号。 Essentially the problem shown here

我在

提出了一项提案
https://github.com/CodeSleeve/asset-pipeline/issues/133

尝试阻止此类事情发生,但是现在作为解决方法可以逐个包含您的文件并找出哪个文件是罪魁祸首。

以下管道的更多信息

与其他环境(如本地环境)相比,生产时开箱即用的资产管道的行为会有所不同。我已经提出了一份提案来记录其中一些pain points and troubleshooting for new comers

如果您使用的是最新版本,那么在切换环境时会有两个重大的行为更改:

  1. 缓存 - 缓存生产资产。这意味着一旦你加载了一个页面,你就会被这些资产困住,直到你做到

    $> php artisan assets:clean

    这就是为什么在开发时应将环境设置为local

  2. 缩小 - 资产仅在生产时缩小。这可能会导致问题,因为minifiers有时会破坏代码。您可以采取一些解决方法来解决此问题。当我遇到某个文件(比如Twitter Bootstrap)时,我通常会做的事情就是使用.min.css扩展名,然后由缩放器跳过,然后写出 as-is

  3. 请注意,此行为开箱即用,可以通过编辑配置轻松修改。

    $> php artisan config:publish codesleeve/asset-pipeline
    

    然后编辑您的文件app/config/packages/codesleeve/asset-pipeline/config.php。有关这些选项的更多信息,请访问documentation here

    希望这有帮助。