我的PaaS出现问题。当我部署我的节点应用程序时,我的脚本正在丢失其可执行位。我知道从长远来看,我的PaaS需要解决这个问题,但是现在我正在寻找一种解决方法。
我在npm脚本文档(https://docs.npmjs.com/misc/scripts#exiting)中读到了这个:
通过将行作为脚本参数传递给sh。
来运行脚本
如果我理解正确,脚本会像这样运行:
sh myscript.sh
如果确实如此,则脚本不需要是可执行的。但是,如果我运行一个不可执行的npm脚本。
npm run myscript
我明白了:
sh:bin / myscript.sh:权限被拒绝
有解决方法吗?
编辑:这是我的简单脚本:
#!/bin/bash
echo Hello World
答案 0 :(得分:1)
在你的package.json中尝试这样一行:
"myscript": "sh bin/myscript.sh"
我认为这里的细则是npm正在以sh -c 'line from package.json here'
运行您的命令,如果这只是一个文件路径,sh
将要求它是可执行的。但是,如果没有-c
,sh
将运行不可执行的shell脚本而不会出现错误。
sh -c 'bin/myscript.sh'
sh: bin/myscript.sh: Permission denied
sh -c 'sh bin/myscript.sh'
myscript is running