Symfony4.2 Компиляция ассетов

У меня есть приложение, использующее Symfony4.2, но начинающееся с 4.0, а затем с 4.1.

Похоже, что сборка Assets изменилась в 4.2, теперь есть {{ encore_entry_link_tags('app') }} или entrypoints.json и runtime.js.

Или эти 2 последних файла должны быть там.

Конечно, я установил webpack-encore-bundle + пакет npm / yarn вроде этого ссылка на сайт.

Но когда я компилирую с помощью yarn encore dev или ./node_modules/.bin/encore dev, этих файлов нет в моей папке build.

Итак, у меня есть исключения, использующие encore_entry_link_tags:

An exception has been thrown during the rendering of a template ("Could not find the entrypoints file from Webpack: the file "/path/to/.../public/build/entrypoints.json" does not exist.").

Я использую fomantic-ui в качестве библиотеки внешнего интерфейса, и, похоже, он не работает с yarn (yarn install raise some exceptions), поэтому, возможно, все пакеты не установлены?

Я попытался использовать npm install вместо yarn install, но кажется, что чего-то не хватает, у меня до сих пор нет этих файлов entrypoint.json и runtime.js.

Для информации вот мой webpackConfig

// webpack.config.js
let Encore = require('@symfony/webpack-encore');

Encore
// the project directory where all compiled assets will be stored
    .setOutputPath('public/build/')

    // the public path used by the web server to access the previous directory
    .setPublicPath((!Encore.isProduction()) ? '/rapp/build' : '/build')

    // this is now needed so that your manifest.json keys are still `build/foo.js`
    // i.e. you won't need to change anything in your Symfony app
    .setManifestKeyPrefix('build')

    // will create public/build/main.js and public/build/main.css
    .addEntry('main', './assets/js/main.js')
    //Add entry if other js/css needed. first parameter is the generated filename.
    //require scss file in js. (if you addEntry for scss file only, it will create a js file with same name)
    .addEntry('reader', './assets/js/reader.js')

    //file upload with dropzone
    .addEntry('dropzone', './assets/js/dropzone.js')

    //Admin chapter js
    .addEntry('admin-chapter', './assets/js/chapter.js')

    .addEntry('admin-unfollow', './assets/js/backend/unfollow.js')

    //addStyleEntry : for css file only
    .addStyleEntry('public', './assets/css/public.scss')

    // allow sass/scss files to be processed
    .enableSassLoader()

    // allow legacy applications to use $/jQuery as a global variable
    .autoProvidejQuery()

    .enableSourceMaps(!Encore.isProduction())

    // empty the outputPath dir before each build
    .cleanupOutputBeforeBuild()

// create hashed filenames (e.g. app.abc123.css)
    .enableVersioning()

    .createSharedEntry('vendor', [
        'jquery',
    ])

    .autoProvideVariables({
        $: 'jquery',
        jQuery: 'jquery',
        'window.jQuery': 'jquery',
    })

    /*.copyFiles({
        from: './assets/img',
        // optional target path, relative to the output dir
        //to: 'images/[path][name].[ext]',

        // if versioning is enabled, add the file hash too
        to: 'images/[path][name].[hash:8].[ext]',

        // only copy files matching this pattern
        pattern: /\.(png|jpg|jpeg|gif|ico|svg|webp)$/
    })*/

    .configureFilenames({
        images: '[path][name].[hash:8].[ext]'
    })
;

// export the final configuration
module.exports = Encore.getWebpackConfig();

В webpackConfig методы copyFiles также вызывают исключение: Error: Encore.copyFiles is not a recognized property or method.

Я не знаю, напутал ли я что-то полностью, обновившись с symfony4.1 и установив js-пакет encore и связку, но похоже, что новые ресурсы Symfony полностью сломаны.

РЕДАКТИРОВАТЬ :

Я выполнил шаги здесь, и теперь у меня есть исключение, предотвращающее любую компиляцию.

"./node_modules/.bin/encore" dev Running webpack ...

D:\PhpStormProjects\bookuto\node_modules\webpack-cli\bin\cli.js:235
                                throw err;
                                ^

TypeError: Cannot destructure property `createHash` of 'undefined' or 'null'.
    at Object.<anonymous> (D:\PhpStormProjects\bookuto\node_modules\mini-css-extract-plugin\dist\index.js:26:44)
    at Module._compile (D:\PhpStormProjects\bookuto\node_modules\v8-compile-cache\v8-compile-cache.js:178:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)
    at Module.require (internal/modules/cjs/loader.js:636:17)
    at require (D:\PhpStormProjects\bookuto\node_modules\v8-compile-cache\v8-compile-cache.js:159:20)
    at Object.<anonymous> (D:\PhpStormProjects\bookuto\node_modules\mini-css-extract-plugin\dist\cjs.js:3:18)
    at Module._compile (D:\PhpStormProjects\bookuto\node_modules\v8-compile-cache\v8-compile-cache.js:178:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)
    at Module.require (internal/modules/cjs/loader.js:636:17)
    at require (D:\PhpStormProjects\bookuto\node_modules\v8-compile-cache\v8-compile-cache.js:159:20)
    at Object.<anonymous> (D:\PhpStormProjects\bookuto\node_modules\@symfony\webpack-encore\lib\loaders\css-extract.js:12:30)
    at Module._compile (D:\PhpStormProjects\bookuto\node_modules\v8-compile-cache\v8-compile-cache.js:178:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)
    at Module.require (internal/modules/cjs/loader.js:636:17)
    at require (D:\PhpStormProjects\bookuto\node_modules\v8-compile-cache\v8-compile-cache.js:159:20)
    at Object.<anonymous> (D:\PhpStormProjects\bookuto\node_modules\@symfony\webpack-encore\lib\config-generator.js:12:30)
    at Module._compile (D:\PhpStormProjects\bookuto\node_modules\v8-compile-cache\v8-compile-cache.js:178:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)

yarn encore dev делает ту же ошибку.

Ну, моя проблема была не такой, у меня есть функция ветки entry_, но компиляция не создает необходимый файл entrypoint.json. Я выполнил шаги, перечисленные в вашей ссылке, и у меня есть исключение при компиляции веб-пакета на бис. Мое сообщение обновлено новым исключением

Etshy 12.01.2019 12:51
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
2
3 568
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мне удалось это исправить!

Тем, у кого есть "старое" приложение Symfony, позаботьтесь о том, чтобы

  • обновите версию веб-пакета следующим образом: "webpack": "^4.28.4"

Предупреждение появляется при компиляции webpackEncore: WARNING Webpack is already provided by Webpack Encore, also adding it to your package.json file may cause issues. но в моем случае, например, я удаляю веб-пакет с моего package.json, он полностью перестал работать, говоря, что «веб-пакет не найден» или что-то подобное

  • обновите свой "@symfony/webpack-encore" как минимум до "^0.21.0"

  • Если у вас нет symfony-flex, добавьте следующие файлы конфигурации

assets.yaml

framework:
    assets:
        json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'

webpack_encore.yaml

webpack_encore:
    # The path where Encore is building the assets.
    # This should match Encore.setOutputPath() in webpack.config.js.
    output_path: '%kernel.project_dir%/public/build'

А в вашем bundles.php

Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true],
  • обновите свой "sass-loader" до "^7.0.1" по крайней мере (рекомендуется, если у вас более ранняя версия, это вызовет предупреждение о некоторых функциях в файле конфигурации webpack).

Надеюсь, я что-то не пропустил и что это может помочь другим людям.

Блестяще! Спасибо за помощь! : D. . . Переходим к следующей ошибке ...: /

Ayelis 19.04.2019 00:44

СПАСИБО! Нигде не нашел. Для проектов без bundles.php просто добавьте его как обычный пакет в AppKernel.php. new Symfony\WebpackEncoreBundle\WebpackEncoreBundle()

Valerie 29.09.2020 16:35

Следить за. Выяснилось, что мне также не нужен webpack в моем package.json при использовании symfony / webpack-encore ^ 0.31.0.

Valerie 29.09.2020 17:15

Другие вопросы по теме