问题标签 [shelljs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
867 浏览

javascript - webpack + shelljs 会抛出“错误:找不到模块'/exec-child.js'”

我想用shelljs用javascript写一些脚本,因为我想使用一些新的JavaScript特性,所以我使用Babel + webpack将我的代码捆绑到一个单独的bundle js中。

代码很简单:

entry.js

webpack.conf.js

包.json

当我运行“npm install && npm run demo”时,它会抛出:

我不知道为什么。

这里也是这个问题的完整小演示,你可以克隆并运行它:

https://github.com/freewind-demos/javascript-shelljs-webpack-demo

0 投票
0 回答
36 浏览

javascript - 如何使用Node在bash中创建环境变量并在程序执行后让变量存活

xapp我有一个在控制台中运行的节点程序。我想xapp创建一个环境变量,在用户关闭终端之前(不仅在程序运行时)保持活动状态。

到目前为止我试过这个:

这不会在控制台中打印任何内容。

但即使显示“培根”,我真正想要的是环境变量在xapp完成后仍然存在......所以我可以在终端中执行它:

并看到他展示“培根”。

我想要做的是xpat通过多次执行进行通信,但只有在同一个终端会话处于活动状态时。

我尝试使用process.env没有成功,因为环境变量仅在同一进程中有效。

0 投票
0 回答
57 浏览

javascript - 执行代码行的Javascript顺序

我正在做一个在 Raspberry Pi 3 中实现的 Telegram Bot。所以我的第一个想法是使用带有 Node.js 的“telegraf”并在那里执行 BOT 的代码,但也使用“shell.js”我想运行一些树莓终端上的命令。问题是我希望 BOT 中的代码等到文件被下载然后程序继续......

这里的问题是程序做了一些不按出现顺序的事情。

在此特定代码中,我想程序编写“正在下载...”,然后启动 script_Download并暂停程序,直到命令 wget 完成(在script_Downlaod内)这部分是通过以下方式完成的:while(shell.exec('ps -ef | grep wget | grep -v grep')!=''){}。但返回类似于“未找到文件”(这意味着 wget 没有完成),然后在 Telegram 聊天中写入“正在下载”和“正在将文件上传到 Google Drive...”。

所以,我想知道如何使这部分代码按顺序执行:首先编写下载,执行脚本,等到它完成然后编写上传......对不起,我不太了解Javascript所以我现在的知识是基本的

0 投票
1 回答
482 浏览

shelljs - 重命名目录中的文件(Shelljs)

如何将文件重命名到同一目录?

当我运行它时,出现以下错误:

shell.cp('-R', './../../config/test.txt', './../../config/test1.txt');

  • cp: dest 不是目录(来源太多)

我阅读了文档,但没有一个回答我的问题。

谢谢你的帮助。

0 投票
1 回答
359 浏览

node.js - 从 cron/shellJS 重新启动 pm2 - bcrypt 版本错误

我正在尝试在 Ubuntu 18.04 中设置一个crontab进程来定期检查状态pm2并在必要时重新启动它。因为我更熟悉 JavaScript,所以我决定让 crontab 进程运行一个节点文件,该文件从 pm2 获取 JSON 读数,以检查 pm2 中每个应用程序的状态。如果检测到任何问题,JS 文件将bash使用shellJS. 就这样:

  1. crontab
  2. 节点脚本
  3. 如果 pm2 应用程序有问题,请执行 bash 脚本
  4. 删除现有的 pm2 应用程序并启动它的新实例

但是,当我从 JS 文件执行此操作时,我收到以下源自 bcrypt 的错误:

这很奇怪。如果我从命令行运行 bash 脚本,或者直接在命令行中运行命令,我不会收到错误 - 只有当我从 shellJS/node.js 启动它时。

这是从节点调用它的行:

shell.exec('/var/scripts/restart-pm2.sh')

这是restart-pm2.sh文件中的行:

pm2 start /root/ecosystem.config.js --only index

再一次,运行那个确切的命令可以正常工作。

更新:

我尝试直接从 cron 运行 bash 脚本,但我也得到了错误。因此,显然不是 shellJS/node 导致错误,而是与 cron 上下文有关。

0 投票
0 回答
61 浏览

node.js - 使用 Node-Cron 运行带有 Node 的 JS 文件

我正在尝试使用 node-cron 和 shelljs 设置任务来运行带有 node.js 的 js 文件。我设置正确吗?

0 投票
0 回答
316 浏览

node.js - 节点使用变量内容执行shell命令

我正在尝试运行 shell 命令,kubectl用于运行部署。部署配置存储在deploymentConfiguration变量中。

当我运行以下命令之一时,出现错误。

返回错误:

error: error validating "STDIN": error validating data: invalid object to validate; if you choose to ignore these errors, turn validation off with --validate=false

返回错误:

/bin/sh: apiVersion:: not found /bin/sh: kind:: not found

我使用终端在本地对此进行了测试,使用 kubectl 命令回显了配置和管道并成功部署。

的内容deploymentConfiguration是:

这是我在回显配置时得到的输出:

由于信息安全,我发出了环境变量

如何确保将内容deploymentConfiguration正确传递给 shell 命令?

谢谢。

0 投票
1 回答
257 浏览

node.js - 在 Node.js 中执行 bash 脚本时,SSH 连接被拒绝

所以我的结构是这样的:

main.jsrequires jsFile1.js,然后 requires 并运行jsFile2.js. jsFile2.js然后最终bashFile.sh使用 ShellJS 运行并传递三个参数。

bashFile.sh:

我的问题是,当我手动开始bashFile.sh使用它时,它工作得很好并且符合预期,但是当我运行它最终也运行脚本bash bashFile.sh parameter1 parameter2 parameter3时它不起作用。main.js我只是得到

还有什么奇怪的,我把shell.exec部件移到了jsFile1.js它,它工作了几次,但是当我再次尝试时,我的连接也被拒绝了。

注意 1:我以前从未连接到服务器,所以它不在我的known_hosts.

注 2: child_process 产生相同的错误。

0 投票
1 回答
258 浏览

node.js - NodeJS 执行一个提示键盘输入的 bash 脚本

我正在尝试从 nodejs 执行外部 bash 脚本。

从终端执行脚本时,会提示输入,例如密码。

从 nodejs 执行时,我无法让它暂停以读取输入。

在网上找不到任何好的信息。

这不可能吗?

密码:对话失败

0 投票
1 回答
418 浏览

node.js - 在 Docker 容器中执行 shell 脚本时的 ENONENT

我正在使用node:12-alpine调用 ShellJSspawn命令的 NodeJS 后端。它应该运行 shell 脚本,我已经验证并测试了它在本地工作。但是,它在 Docker 容器中运行时会显示此错误。

我还使用 docker exec 验证了该脚本是否存在于文件夹中。

我需要在 alpine 中进行配置才能使其正常工作吗?

这是 ShellJS 调用的命令:source execute.sh