簡體   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