sh: 1: cross-env: laravel mix 的权限被拒绝

Posted

技术标签:

【中文标题】sh: 1: cross-env: laravel mix 的权限被拒绝【英文标题】:sh: 1: cross-env: Permission denied on laravel mix 【发布时间】:2019-07-16 19:23:47 【问题描述】:

我正在尝试运行npm run dev,但出现以下错误:

sh: 1: cross-env: Permission denied
npm ERR! code ELIFECYCLE
npm ERR! errno 126
npm ERR! @ development: `cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js`
npm ERR! Exit status 126
npm ERR! 
npm ERR! Failed at the @ development 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/shanmaseen/.npm/_logs/2019-02-22T16_32_08_191Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 126
npm ERR! @ dev: `npm run development`
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/shanmaseen/.npm/_logs/2019-02-22T16_32_08_241Z-debug.log

我已经在互联网上搜索了一个星期,没有任何帮助!

我什至尝试从 package.json 脚本中删除 'cross-env',但随后 webpack: permission denied 发生,表明权限错误不是由 cross-env it self 引起的。

这是错误日志:

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.7.0
3 info using node@v11.10.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/e/www/mwar/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
9 verbose lifecycle @~dev: CWD: /media/e/www/mwar
10 silly lifecycle @~dev: Args: [ '-c', 'npm run development' ]
11 silly lifecycle @~dev: Returned: code: 126  signal: null
12 info lifecycle @~dev: Failed to exec dev script
13 verbose stack Error: @ dev: `npm run development`
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:197: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:197:13)
13 verbose stack     at maybeClose (internal/child_process.js:984:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:265:5)
14 verbose pkgid @
15 verbose cwd /media/e/www/mwar
16 verbose Linux 4.18.0-15-generic
17 verbose argv "/usr/bin/node" "/usr/bin/npm" "run" "dev"
18 verbose node v11.10.0
19 verbose npm  v6.7.0
20 error code ELIFECYCLE
21 error errno 126
22 error @ dev: `npm run development`
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 ]

我正在使用 laravel 5.7mix。

节点版本:v11.10.0 npm 版本:6.7.0

有什么帮助吗?

【问题讨论】:

看到这个laracasts.com/discuss/channels/laravel/… @Molda 没用。我什至尝试安装一个新的 laravel 项目,但仍然没有工作。 问题可能是JS文件权限。我通过添加到 Homestead.yml 文件夹部分来解决:' type: "smb" mount_options: ["mfsymlinks,dir_mode=0775,file_mode=0775"] ' 【参考方案1】:

好的,我解决了问题,保存项目的存储是自动挂载的,它没有执行权限。

我很容易在 /etc/fstab 文件中添加了 exec 的挂载选项,如下所示:

auto,user,exec,utf8,uid=1000,gid=1000,rw 0 0

【讨论】:

嘿@shamaseen,你介意解释一下如何做到这一点吗?我想我有同样的问题。我在 Ubuntu 16.04 Vagrant 上遇到了这个问题 @S.Domeng 打开 /etc/fstab 文件并添加exec 如上图所示【参考方案2】:

我在 ubuntu 18 上。

以下命令帮助了我:-)

npm rebuild

记载如下,在官网上。

此命令在匹配的文件夹上运行npm build 命令。这在您安装新版本的节点时很有用,并且必须使用新的二进制文件重新编译所有 C++ 插件。在使用--ignore-scripts--no-bin-links 安装时,它也很有用,可以明确选择要构建和/或链接箱的包。

如果提供了一个或多个包名称(以及可选的版本范围),则只有名称和版本与其中一个说明符匹配的包才会被重建。

【讨论】:

这拯救了我的一天。再次。 ? 再一次......? 对我来说再次))非常感谢你的好人! 它也对我有用。但是,我们将非常感谢您解释一下为什么会这样工作 你在哪里运行了这个命令?在项目文件夹或任何地方?它对我不起作用。【参考方案3】:

这是因为全局安装包的权限问题,npm 被拒绝访问。

要解决这个尝试

1.

npm rebuild

npm run watch

或 2

rm -Rf node_modules

npm install

npm run watch

希望它有效。

【讨论】:

让用户成为/usr/local 的所有者是通过反模式解决问题。该目录应该通过为用户提供只读数据来服务用户。 (manual) @BasPeeters 我已经编辑了解决方案。根据您的建议,我已经删除了反模式点,谢谢。 方法二作品【参考方案4】:

试试这个。

$ rm -rf node_modules

$ npm cache clear --force

$ npm install npm@latest -g

$ chown -R $USER ~/.npm

$ npm install 

【讨论】:

【参考方案5】:

以下事情对我有用

chmod -R a+x node_modules

source

【讨论】:

谢谢。这对我有用,而且很容易。可能是最好的答案。【参考方案6】:

正如@savedbeau 建议的那样,运行以下命令可以解决此问题:


npm rebuild

紧随其后

npm run watch

【讨论】:

【参考方案7】:

如果将文件(和文件夹)权限更改为更严格的权限,则在 Ubuntu 上可能会出现如下权限错误:

$ npm run watch

> watch
> mix watch

sh: 1: mix: Permission denied

要在 Ubuntu 上解决这个问题,这可能有效 - 它对我有用:

chmod -R u+x node_modules

它给(+)用户(u)执行(x)权限递归(-Rnode_modules文件夹中的所有内容。

要小心,考虑安全性,不要不要使用a 标志(而不是u 标志)来授予每个人执行权。

【讨论】:

以上是关于sh: 1: cross-env: laravel mix 的权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

/bin/sh: 1: cross-env: 在我使用 github 操作时未找到

宅基地上的 Laravel 7,带有 npm 错误“cross-env”

Laravel 5.4 ‘cross-env’ 不被识别为内部或外部命令

Laravel5.5执行 npm run dev时报错,提示cross-env找不到(not found)的解决办法

Laravel 5.4 混合 npm 运行开发错误

Laravel 5.4 laravel-elixir-webpack-react