第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

有沒(méi)有辦法讓js逐行執(zhí)行這個(gè)腳本

有沒(méi)有辦法讓js逐行執(zhí)行這個(gè)腳本

手掌心 2022-06-16 10:17:09
我正在嘗試制作一個(gè)腳本,每次我創(chuàng)建一個(gè)新的反應(yīng)應(yīng)用程序時(shí)都可以自動(dòng)化我的項(xiàng)目,所以首先我制作了一個(gè)運(yùn)行我的 main.js 腳本的 bat 文件這是bat文件@echo offsetlocal enableextensionsREM run my mainnode "C:\Windows\System32\automate\main.js" %1這是 main.js 文件const { exec } = require("child_process");const { replace, rename } = require("./file.js");const axios = require("axios").default;let state = {  cwd: "E:/WORK/Projects",  token: "[[my github token]]",  project: {    name: process.argv[2],    path: "E:/WORK/Projects/" + process.argv[2],    src: "E:/WORK/Projects/" + process.argv[2] + "/src",  },};// initlet { cwd, project, token } = state;////// main// create the appexec("create-react-app " + project.name, { cwd });// install debsexec("npm i node-sass", { cwd: project.path });// use sassrename(project.src + "/index.css", "index.scss");rename(project.src + "/App.css", "App.scss");replace(project.src + "/index.js", "./index.css", "./index.scss");replace(project.src + "/App.js", "./App.css", "./App.scss");// structure my applet code = [  'mkdir "' + project.src + '/App"',  'mkdir "' + project.src + '/App/Elements"',  'mkdir "' + project.src + '/App/nav"',  'touch "' + project.src + '/App/nav.jsx"',  'touch "' + project.src + '/App/nav/nav.scss"',];code = code.join(" && ");exec(code);// push to githubaxios({  method: "post",  url: "https://api.github.com/user/repos?access_token=" + token,  data: {    name: project.name,  },})  .then((res) => {    let repo = res.data.clone_url;    let c = [      "git remote add origin " + repo,      "git push --set-upstream origin master",      "git push",    ].join(" && ");    exec(c);  })  .catch((err) => {    console.log(err.response.data.errors);  });// open in codeexec("code " + project.path);// final messageconsole.log("Have Fun!");現(xiàn)在一切都準(zhǔn)備好了,但我唯一的問(wèn)題是每一行都被異步執(zhí)行例如 create-react-app 命令這需要很多時(shí)間,并且每一行都取決于它首先完成
查看完整描述

3 回答

?
慕萊塢森

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

您可以使用execSync代替exec

const {execSync} = require('child_process');

以下是有關(guān)此功能的主要文檔:NodeJs Docs

具體說(shuō)明:

child_process.execSync() 方法通常與 child_process.exec() 相同,只是該方法在子進(jìn)程完全關(guān)閉之前不會(huì)返回。當(dāng)遇到超時(shí)并發(fā)送 killSignal 時(shí),該方法將在進(jìn)程完全退出之前不會(huì)返回。如果子進(jìn)程攔截并處理了 SIGTERM 信號(hào)并且沒(méi)有退出,則父進(jìn)程會(huì)一直等到子進(jìn)程退出。


查看完整回答
反對(duì) 回復(fù) 2022-06-16
?
qq_笑_17

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊

這是一個(gè)可以使用鎖或信號(hào)量的經(jīng)典案例。

只需在所需行之前鎖定執(zhí)行,然后將其刪除。

參考this for locks in js - How to implement a lock in JavaScript


查看完整回答
反對(duì) 回復(fù) 2022-06-16
?
白衣非少年

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊

您可以使用 util 模塊中的 promisify 將 async exec 函數(shù)轉(zhuǎn)換為 promise,然后您可以使用 await exec 以使其顯示為同步執(zhí)行。


const util = require('util');

const exec = util.promisify(require('child_process').exec);

然后,您可以將代碼包裝在這樣的函數(shù)中:


async function init(){

  //your code

  await exec("create-react-app " + project.name, { cwd });

  //...

}

init();

對(duì)于像這樣的簡(jiǎn)單腳本,execSync 實(shí)際上可能更容易,但在其他情況下您可能會(huì)發(fā)現(xiàn)異步版本更好。


查看完整回答
反對(duì) 回復(fù) 2022-06-16
  • 3 回答
  • 0 關(guān)注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)