Search code examples
phpcachingasseticsymfonysymfony-console

Assetic file does not exist error, even though no reference to file anymore?


I have a file called main.less that I created in the past. I deleted it because I no longer needed it, but now I get the following error when I try to run bin/console assetic:watch

[error] The source file "/home/distribution/public_html/distribution.tech/app/../web/bundles/app/less/main.less" does not exist.

or bin/console assetic:dump regardless of environment used.

 [RuntimeException]                                                                                                        
  The source file "/home/distribution/public_html/distribution.tech/app/../web/bundles/app/less/main.less" does not exist. 

My current routine which has been working until I did this was to create a shell script file that runs the following commands:

chown -R distribution:distribution .
rm -rf var/cache/dev/*
rm -rf var/cache/prod/*
rm -rf web/css/*
rm -rf web/js/*
bin/console cache:clear --env=dev
bin/console cache:clear --env=prod --no-debug
bin/console assets:install web --symlink --relative
bin/console assetic:dump --env=dev --verbose
bin/console assetic:dump --env=prod --no-debug
bin/console assetic:watch
bin/console doctrine:schema:update --force --dump-sql
bin/console doctrine:schema:update --force --dump-sql --env=prod
chown -R distribution:distribution .
bin/console server:run

I always run it as root to ensure everything will work, files are owned by user distribution though.

The only file that references the less and javascript files is...

base.html.twig

{% spaceless %}
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>{% block title %}Welcome!{% endblock %}</title>
        {% block stylesheets %}
            {% stylesheets 'bundles/skeleton/less/main.less' filter='less' filter='uglifycss' filter='cssrewrite' output='css/compiled-main.css' %}
                <link rel="stylesheet" href="{{ asset_url }}" />
            {% endstylesheets %}
        {% endblock %}
        <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
    </head>
    <body>
        {% block body %}{% endblock %}
        {% block javascripts %}
            {% javascripts 
             '@SkeletonBundle/Resources/public/js/*' 
             '@AppBundle/Resources/public/js/*'
              filter='uglifyjs2' 
              output='js/js-compiled.js' 
            %}
                <script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
                <script src="{{ asset_url }}"</script>
            {% endjavascripts %}
        {% endblock %}
    </body>
</html>
{% endspaceless %}

My Directory structure looks like below straight from my FTP

enter image description here

You will notice main.less is now in skeleton bundle instead of the app bundle. I moved it here, but for some reason it thinks its still in app bundle instead of skeleton bundle??

How do I fix this error?

Extra Info:

When I ran a verbose trace of the error I got this with asset:dump

Dumping all dev assets.
Debug mode is on.

03:37:43 [file+] /home/distribution/public_html/distribution.tech/app/../web/css/compiled-main.css
        /home/distribution/public_html/distribution.tech/app/../web/bundles/skeleton/less/main.less
03:37:43 [file+] /home/distribution/public_html/distribution.tech/app/../web/css/compiled-main_main_1.css
        /home/distribution/public_html/distribution.tech/app/../web/bundles/skeleton/less/main.less
03:37:44 [file+] /home/distribution/public_html/distribution.tech/app/../web/js/js-compiled.js
        /home/distribution/public_html/distribution.tech/src/SkeletonBundle/Resources/public/js/shared.js
        /home/distribution/public_html/distribution.tech/src/AppBundle/Resources/public/js/app.js
03:37:44 [file+] /home/distribution/public_html/distribution.tech/app/../web/js/js-compiled_part_1_shared_1.js
        /home/distribution/public_html/distribution.tech/src/SkeletonBundle/Resources/public/js/shared.js
03:37:45 [file+] /home/distribution/public_html/distribution.tech/app/../web/js/js-compiled_part_2_app_1.js
        /home/distribution/public_html/distribution.tech/src/AppBundle/Resources/public/js/app.js
03:37:45 [file+] /home/distribution/public_html/distribution.tech/app/../web/css/compiled-main.css
        /home/distribution/public_html/distribution.tech/app/../web/bundles/app/less/main.less


  [RuntimeException]                                                                                                        
  The source file "/home/distribution/public_html/distribution.tech/app/../web/bundles/app/less/main.less" does not exist.  


Exception trace:
 () at /home/distribution/public_html/distribution.tech/vendor/kriswallsmith/assetic/src/Assetic/Asset/FileAsset.php:62
 Assetic\Asset\FileAsset->load() at /home/distribution/public_html/distribution.tech/vendor/kriswallsmith/assetic/src/Assetic/Asset/BaseAsset.php:103
 Assetic\Asset\BaseAsset->dump() at /home/distribution/public_html/distribution.tech/vendor/kriswallsmith/assetic/src/Assetic/Asset/AssetCollection.php:151
 Assetic\Asset\AssetCollection->dump() at /home/distribution/public_html/distribution.tech/vendor/symfony/assetic-bundle/Command/AbstractCommand.php:119
 Symfony\Bundle\AsseticBundle\Command\AbstractCommand->doDump() at /home/distribution/public_html/distribution.tech/vendor/symfony/assetic-bundle/Command/AbstractCommand.php:51
 Symfony\Bundle\AsseticBundle\Command\AbstractCommand->dumpAsset() at /home/distribution/public_html/distribution.tech/vendor/symfony/assetic-bundle/Command/DumpCommand.php:118
 Symfony\Bundle\AsseticBundle\Command\DumpCommand->execute() at /home/distribution/public_html/distribution.tech/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:256
 Symfony\Component\Console\Command\Command->run() at /home/distribution/public_html/distribution.tech/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:803
 Symfony\Component\Console\Application->doRunCommand() at /home/distribution/public_html/distribution.tech/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:186
 Symfony\Component\Console\Application->doRun() at /home/distribution/public_html/distribution.tech/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:86
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /home/distribution/public_html/distribution.tech/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:117
 Symfony\Component\Console\Application->run() at /home/distribution/public_html/distribution.tech/bin/console:29

assetic:dump [--forks FORKS] [--watch] [--force] [--period PERIOD] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--] <command> [<write_to>]

Config.yml assetic settings:

assetic:
    debug:          '%kernel.debug%'
    use_controller: '%kernel.debug%'
    filters:
        cssrewrite: ~
        uglifyjs2:
            # the path to the uglifyjs executable
            bin: /usr/bin/uglifyjs
        uglifycss:
            bin: /usr/bin/uglifycss
        less: 
            node_paths: [/usr/local/lib/node_modules/]
            bin: /usr/bin/less

Main.less in skeleton bundle

/* Global Variables */
@logo: "../images/logo-hires-opt.png";

/* Fonts */
@font-face {
    font-family: 'ProximaNova';
    src: url('../fonts/proximanova-regular-webfont.ttf');
}
@font-face {
    font-family: 'ProximaNovaAltBold';
    src: url('../fonts/proxima_nova_alt_bold-webfont.ttf');
}

.withfont{font-family:ProximaNova;color:blue;background:url('../images/background.jpg');}

@import "shared.less";
@import "header.less";
@import "footer.less";

Admin.less file in appBundle

.test{color:red}

admin.html.twig

{% extends 'SkeletonBundle::base.html.twig' %}

{% block body %}
    <div id="wrapper">
        <div id="container">
            <div class="withfont">admin page</div>
            <div>admin page without <span class="test">fonts</span></div>
        </div>
    </div>
{% endblock %}

Solution

  • Okay, turns out that my editor had an old version open to base.html.twig that was referencing the older location, so when it went to render it could not find it... I'm not sure how I didn't notice this, but the error was indeed related to the file not actually being there.

    The error was in this command

    {% stylesheets 'bundles/skeleton/less/main.less' filter='less' filter='uglifycss' filter='cssrewrite' output='css/compiled-main.css' %}
                    <link rel="stylesheet" href="{{ asset_url }}" />
                {% endstylesheets %}
    

    weird part is I would have sworn I deleted the old base.html.twig, but after doing some tweaks it magically re-appeared, and I think it has to do with my editor and how it saves since I moved files around and kept the editor open at the same time.