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
)权限递归(-R
)node_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’ 不被识别为内部或外部命令