Как в Laravel можно создать отдельную директорию в папке public для модулей или подключить файлы из папки assets с помощью Laravel Mix?

Как создать отдельную папку "public" при использовании библиотеки "nwidart/laravel-modules"? Ошибка "Error [ERR_REQUIRE_ESM]: require() of ES Module" возникает после попытки использовать инструкцию по Laravel Mix.
  • 17 февраля 2024 г. 16:38
Ответы на вопрос 2
Для создания отдельной директории в папке `public` для модулей или подключения файлов из папки `assets` с помощью Laravel Mix можно воспользоваться следующими шагами:

1. Создайте новую директорию внутри папки `public` (например, `public/modules`) для размещения файлов модулей или создайте папку `assets` в корневой директории вашего проекта.

2. В файле `webpack.mix.js` добавьте инструкцию для копирования файлов из папки `assets` в папку `public`:

```javascript
mix.copy('resources/assets', 'public/assets');
```

3. Затем выполните команду `npm run dev` для компиляции ваших ресурсов с помощью Laravel Mix.

Теперь вы сможете использовать файлы из папки `public/modules` или `public/assets` в вашем проекте.

Если у вас возникает ошибка "Error [ERR_REQUIRE_ESM]: require() of ES Module" при попытке использования инструкции Laravel Mix с библиотекой "nwidart/laravel-modules", возможно проблема связана с тем, что ваши модули используют модульную систему ECMAScript, а Laravel Mix ожидает CommonJS модули.

Для решения этой проблемы вы можете попробовать изменить настройки Laravel Mix в файле `webpack.mix.js` для поддержки ES модулей. Например, вы можете установить опцию `esModule` в `false`:

```javascript
mix.webpackConfig({
   module: {
       rules: [
           {
               test: /\.m?js$/,
               resolve: {
                   fullySpecified: false,
               },
           },
       ],
   },
});
```

Это позволит Laravel Mix работать с ECMAScript модулями. После внесения изменений выполните команду `npm run dev` для компиляции ваших ресурсов и проверьте, что ошибка больше не возникает.
1) Для решения твоей проблемы можно использовать для каждого модуля свой шаблон (layout). 

2) Посмотри документацию https://laravelmodules.com/docs/v10/compiling-asse... Ты можешь собирать assets для каждого модуля отдельно.
Похожие вопросы