代码之家  ›  专栏  ›  技术社区  ›  Astro-Otter

Symfony 4:JS和CSS使用Webpack return 404编译

  •  0
  • Astro-Otter  · 技术社区  · 6 年前

    我正在用Symfony4和VueJs构建一个项目,由nginx服务器托管,并与Docker一起运行。我的模板还可以,但是css和js文件在404中。

    以下是我的nginx配置:

    server {
        listen 80;
        listen [::]:80;
        server_name symfony.local;
        root /var/www/myproject/public;
    
        location / {
            try_files $uri /index.php$is_args$args;
        }
    
        location ~ ^/(index)\.php(/|$) {
            fastcgi_pass php:9000;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
    
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param HTTPS off;
    
            internal;
        }
    
        location ~ \.php$ {
            return 404;
        }
    
       error_log /var/log/nginx/symfony_error.log;
       access_log /var/log/nginx/symfony_access.log;
    }
    

    我配置了我的网页包文件:

    var Encore = require('@symfony/webpack-encore');
    Encore
      .setOutputPath('public/build/')
      .setPublicPath('/build')
      .cleanupOutputBeforeBuild()
      .enableSourceMaps(!Encore.isProduction())
      .addEntry('app', './assets/js/app.js')
      .enableBuildNotifications()
      .enableSassLoader()
      .enableVueLoader();
    ;
    
    module.exports = Encore.getWebpackConfig();
    

    Css和JS文件位于目录中 assets\js\* assets\css\* 当我用 yarn encore dev 我的构建文件在中 public\build\app.js public\build\app.css 在模板base.html.twig中:

    {% block stylesheets %}
      {{ encore_entry_link_tags('app') }}
     {% endblock %}
    

    {% block javascripts %}
      {{ encore_entry_script_tags('app') }}
    {% endblock %}
    

    我做了一件事,就像书中解释的那样 https://symfony.com/doc/current/frontend.html 所以我不明白遗漏了什么。

    谢谢:)

    1 回复  |  直到 6 年前
        1
  •  1
  •   Astro-Otter    6 年前

    问题已解决,它位于docker-compose.yml中: 在container nginx中,我忘了在卷中装载我的应用程序的路径,它只用于PHP容器

    nginx:
        image: nginx:latest
        container_name: dso_nginx
        hostname: nginx
        ports:
            - 80:80
            - 443:443
        depends_on:
            - php
        volumes:
            - ./docker/nginx/default.template:/etc/nginx/conf.d/default.template
            - ".:/var/www/my-symfony-project:ro"
            - ./logs/nginx/:/var/log/nginx
        env_file:
            - .env
        environment:
            - NGINX_HOST=${NGINX_HOST}
        command: /bin/sh -c "envsubst '$$NGINX_HOST' < /etc/nginx/conf.d/default.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"