【问题标题】:How to pass a variable via stdin to a cli command programmatically?如何以编程方式通过标准输入将变量传递给 cli 命令?
【发布时间】:2018-08-26 02:01:29
【问题描述】:

我正在使用 graphql-schema-linter 包来验证 GraphQL 架构。

我想知道是否可以像这样通过将类型定义传递给标准输入来以编程方式执行验证......

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

const typeDefs = require('./type-defs');
exec(`graphql-schema-linter --stdin "${typeDefs}"`, (err, stdout, stderr) => {
    if (err) console.log('ERROR: ', err);
    if (stdout) console.log('STDOUT: ', stdout);
    if (stderr) console.log('STDERR: ', stderr);    
});

const server = new ApolloServer({
    typeDefs
});

以下代码会产生错误,因为我不太确定如何以正确的方式通过 stdin 传递类型定义

【问题讨论】:

  • 你能打印出试图执行的命令并在外部运行它吗?

标签: node.js command-line-interface graphql


【解决方案1】:

好的,经过一番挖掘,我找到了解决方案。原来我必须使用spawnSync 接受标准输入作为输入

const command = spawnSync('graphql-schema-linter', ['-s'], { input: typeDefs, encoding: 'utf-8' });

【讨论】:

    猜你喜欢
    • 2011-06-14
    • 2016-09-15
    • 2011-01-24
    • 2019-12-23
    • 2020-02-08
    • 1970-01-01
    • 2017-03-10
    相关资源
    最近更新 更多