首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于构建Node.js标记的Marp不起作用

用于构建Node.js标记的Marp不起作用
EN

Stack Overflow用户
提问于 2021-10-24 19:58:59
回答 1查看 38关注 0票数 0

我编写了这个简单的node.js脚本来构建Marp markdown并将其转换为PDF。但它不会做任何事情,也不会终止。我在最后添加了一个构建,我看到node.js不会等待所有命令执行完成,但是exec也不会运行Marp console.log("test")命令。

如果我从终端运行"cmd“字符串,一切正常。我认为我使用exec的方式有问题

代码语言:javascript
复制
var glob = require("glob");
var cp = require("child_process");

glob("lab*/*.marp.md", {}, function (err, files) {
  files.forEach((file) => {
    var destination = file.replace(".md", "");
    var cmd = `marp ${file} --allow-local-files --pdf -o ${destination}.pdf`;
    var dir = cp.exec(cmd, (err, stdout, stderr) => {
      if (err) {
        console.log("node couldn't execute the command");
        return;
      }

      // the *entire* stdout and stderr (buffered)
      console.log(`stdout: ${stdout}`);
      console.log(`stderr: ${stderr}`);
    });

    dir.on("exit", function (code) {
      // exit code is code
      console.log(`finished building: ${file}`);
    });
  });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-24 20:27:03

你可以试试execSync()函数,它会解决这个问题

代码语言:javascript
复制
var glob = require("glob");
var cp = require("child_process");

glob("lab*/*.marp.md", {}, function (err, files) {
  files.forEach((file) => {
    var destination = file.replace(".md", "");
    var cmd = `marp ${file} --allow-local-files --pdf -o ${destination}.pdf`;

    var dir = cp.execSync(cmd, (err, stdout, stderr) => {
      if (err) {
        console.log("node couldn't execute the command");
        return;
      }

      // the *entire* stdout and stderr (buffered)
      console.log(`stdout: ${stdout}`);
      console.log(`stderr: ${stderr}`);
    });

    dir.on("exit", function (code) {
      // exit code is code
      console.log(`finished building: ${file}`);
    });
  });
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69700292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档