Ошибка при запуске Symfony Webpack. бис: отказано в разрешении

Symfony 4.1 с веб-пакетом на бис выдает ошибку при запуске с npm / yarn

Я выполнил шаги, упомянутые в официальной документации symfony, после успешной установки через composer require webpack-encore и после npm install, я попробовал npm run dev и получил ошибку ниже, такое же разрешение отклонено при использовании yarn encore dev.

Я использую debian 9

kamii@kamii-workstation:~$ node -v
v10.9.0
kamii@kamii-workstation:~$ npm -v
6.4.1
kamii@kamii-workstation:~$ yarn -v
1.9.4

ЧЕРЕЗ НПМ:

kamii@kamii-workstation:/media/disks/Development/dev_lab_gen/exim_pos$ npm run dev

> @ dev /media/disks/Development/dev_lab_gen/exim_pos
> encore dev

sh: 1: encore: Permission denied
npm ERR! code ELIFECYCLE
npm ERR! errno 126
npm ERR! @ dev: `encore dev`
npm ERR! Exit status 126
npm ERR! 
npm ERR! Failed at the @ dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/kamii/.npm/_logs/2018-09-03T20_11_01_530Z-debug.log

Через пряжу

kamii@kamii-workstation:/media/disks/Development/dev_lab_gen/exim_pos$ yarn encore dev
yarn run v1.9.4
$ /media/disks/Development/dev_lab_gen/exim_pos/node_modules/.bin/encore dev
/bin/sh: 1: /media/disks/Development/dev_lab_gen/exim_pos/node_modules/.bin/encore: Permission denied
error Command failed with exit code 126.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Вот файл журнала NPM

0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'run', 'dev' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'predev', 'dev', 'postdev' ]
5 info lifecycle @~predev: @
6 info lifecycle @~dev: @
7 verbose lifecycle @~dev: unsafe-perm in lifecycle true
8 verbose lifecycle @~dev: PATH: /usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/media/disks/Development/dev_lab_gen/exim_pos/node_modules/.bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
9 verbose lifecycle @~dev: CWD: /media/disks/Development/dev_lab_gen/exim_pos
10 silly lifecycle @~dev: Args: [ '-c', 'encore dev' ]
11 silly lifecycle @~dev: Returned: code: 126  signal: null
12 info lifecycle @~dev: Failed to exec dev script
13 verbose stack Error: @ dev: `encore dev`
13 verbose stack Exit status 126
13 verbose stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:301:16)
13 verbose stack     at EventEmitter.emit (events.js:182:13)
13 verbose stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:182:13)
13 verbose stack     at maybeClose (internal/child_process.js:961:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:250:5)
14 verbose pkgid @
15 verbose cwd /media/disks/Development/dev_lab_gen/exim_pos
16 verbose Linux 4.9.0-8-amd64
17 verbose argv "/usr/bin/node" "/usr/bin/npm" "run" "dev"
18 verbose node v10.9.0
19 verbose npm  v6.4.1
20 error code ELIFECYCLE
21 error errno 126
22 error @ dev: `encore dev`
22 error Exit status 126
23 error Failed at the @ dev script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 126, true ]

Попробуйте с "./node_modules/.bin/encore dev-server"

Jose FG 03.09.2018 22:25

@joseFG Ох, я не думал об этом. node ./node_modules/.bin/encore dev работал. Не могли бы вы объяснить, почему он не работает с npm / yarn? Спасибо

Kamran Akram 03.09.2018 22:31
Стоит ли изучать 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 нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
2
2
4 227
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Я собираюсь опираться на комментарий @ Jose и поделиться некоторыми типичными ошибками:

При установке encore вы ставили флаг -g (для глобальных)? Если нет, то это могло быть причиной.

Еще одна распространенная вещь - ваш encore действительно был установлен глобально (возможно, /usr/local/bin), но ваша ОС его не видит. Это могло быть просто из-за плохого $PATH. Попробуйте запустить source ~/.bash_profile, а затем повторите попытку. Если вы по-прежнему не можете запустить его, вероятно, путь не включен в ваш $PATH.

Наконец, несколько месяцев назад я довольно сильно ударил по этому поводу, установив новую версию Centos, где node упорно не мог установить что-либо глобально. Учебники в Google расскажут вам просто chmod 777 о вашем /usr/bin или /usr/local/bin, что просто плохая идея. Вместо этого настройте node на использование другого пути назначения для его модулей.

Надеюсь, что это помогает немного...

Я как раз об этом думал =)

Jose FG 03.09.2018 23:52

Попробуй это: ./node_modules/.bin/encore dev-server

Если это так, то, вероятно, у вас установлена ​​глобальная программа на бис, и поэтому, когда вы запускаете ее, у вас нет разрешения делать это в глобальной папке.

Напишите echo $PATH и проверьте, не выходит ли на бис.

Указанная команда не запускается и возвращает ту же ошибку «В разрешении отказано». Хотя node ./node_modules/.bin/encore dev работает на отлично. Encore не устанавливается глобально, так как я никогда не устанавливал его явно, он был установлен локально в проекте во время начальной настройки Symfony webpack-encore.

Kamran Akram 04.09.2018 00:34
Ответ принят как подходящий

Я был в разделе, смонтированном с флагом noexec по умолчанию. Явное добавление флага exec в /etc/fstab решило мою проблему, даже решило некоторые другие проблемы с разрешениями в gulp.

User mounted partitions, e.g. when using the ‘user’ or ‘users’ mount options in the /etc/fstab file, are done with the ‘noexec’ mount option by default for security reasons. This means that memory mapping (mmap) files for execution will be denied. Another reason can be the lack of kernel support for shared writable mmap which was added to Linux kernel 2.6.26.

Solution: Add the ‘exec’ mount option to the end of the mount options. It’s important that the option to be the last one, otherwise other mount option can over judge its effect. However please also note that Wine was not designed to run arbitrary applications directly from a Windows partition. To do so, one must install the Windows application via Wine onto the Windows partition first.

В моем случае помогло удаление папки node_modules и запуск yarn install. Мои права доступа к каталогу изменились, и это повлияло на локально установленный бис.

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