繁体   English   中英

Symfony Webpack 运行时出错。 再演一次:权限被拒绝

[英]Symfony Webpack encore error on run. encore: Permission denied

带有 webpack encore 的 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

通过 NPM:

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 npm@6.4.1
3 info using node@v10.9.0
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

如果是这样,您可能已全局安装了 encore,因此当您运行它时,您无权在全局文件夹中执行此操作。

写入echo $PATH并检查 encore 是否在这里。

我将依靠@Jose 的评论并分享一些常见的陷阱:

安装encore时,您是否放置了-g (用于全局)标志? 如果没有,这可能是原因。

另一个常见的事情是您的encore确实是全局安装的(可能是/usr/local/bin ),但您的操作系统看不到它。 这可能仅仅是由于错误的$PATH 尝试运行source ~/.bash_profile然后重试。 如果您仍然无法运行它,则该路径可能未包含在您的$PATH

最后,几个月前,我在全新安装 Centos 时遇到了这个问题,其中node始终无法在全局安装任何东西。 Google 上的教程会告诉您chmod 777您的/usr/bin/usr/local/bin ,这只是一个坏主意。 相反,将您的node配置为对其模块使用不同的目标路径。

希望这个对你有帮助...

默认情况下,我在安装有noexec标志的分区上。 /etc/fstab显式添加exec标志解决了我的问题,甚至解决了gulp其他一些权限问题。

用户挂载分区,例如在 /etc/fstab 文件中使用“user”或“users”挂载选项时,出于安全原因,默认情况下使用“noexec”挂载选项完成。 这意味着用于执行的内存映射 (mmap) 文件将被拒绝。 另一个原因可能是缺乏内核对共享可写 mmap 的支持,该支持已添加到 Linux 内核 2.6.26 中。

解决方案:在挂载选项的末尾添加'exec'挂载选项。 重要的是该选项是最后一个,否则其他挂载选项可能会过度判断其效果。 但是还请注意,Wine 并非旨在直接从 Windows 分区运行任意应用程序。 为此,必须首先通过 Wine 将 Windows 应用程序安装到 Windows 分区上。

在我的情况下,删除 node_modules 文件夹并运行yarn install帮助。 我的目录权限发生了变化,它影响了本地安装的 encore。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM