Npm运行并行脚本无效

时间:2017-10-22 21:43:41

标签: javascript node.js npm graphql

该脚本的目的是继续重试连接到服务器端点并尽可能生成graphql架构。

如果我在另一个命令提示符下运行它,该脚本可以正常工作。我只想在一个命令提示符下运行一个命令。

相反,我收到错误:

  

(node:4212)MaxListenersExceededWarning:检测到可能的EventEmitter内存泄漏。 11名最终听众补充道。使用emitter.setMaxListeners()来增加限制

这对我来说没有任何意义,因为听众应该只设置一次,而不是11次......

dotnet-run只运行asp.net服务器。显然这需要一些时间来启动,这就是为什么我写这个脚本以继续重试命中服务器。

"start": "npm-run-all --parallel dotnet-run get-schema:dev",
"get-schema:dev": "node scripts/getSchema.js --url http://localhost:8080/graphql"

我正在使用npm-run-all npm包

getSchema脚本:

require('isomorphic-fetch');
const getArgs = require('get-args');
const FormData = require('form-data');
const fs = require('fs');
const {
  buildClientSchema,
  introspectionQuery,
  printSchema,
} = require('graphql/utilities');
const path = require('path');

const schemaPath = path.join(__dirname, '../schema/schema');
const formData = new FormData();

formData.append('query', introspectionQuery);
const args = getArgs();
const url = args.options.url;

let intervalId = null;

// Save JSON of full schema introspection for Babel Relay Plugin to use
const setSchema = () => {
  fetch(url, {
    method: 'post',
    body: formData,
  })
    .then((res) => {
      if (res.ok) {
        return res.json();
      }
      throw new Error(res.statusText);
    })
    .then((schemaJSON) => {
      fs.writeFileSync(
        `${schemaPath}.json`,
        JSON.stringify(schemaJSON, null, 2),
      );

      // Save user readable type system shorthand of schema
      const graphQLSchema = buildClientSchema(schemaJSON.data);

      fs.writeFileSync(
        `${schemaPath}.graphql`,
        printSchema(graphQLSchema),
      );

      clearInterval(intervalId);
      console.log('Successfuly updated schema.');
    })
    .catch((error) => {
      console.log(error);
    });
};

intervalId = setInterval(setSchema, 1000);

在运行此脚本一段时间后,即使服务器已启动,我也会收到错误:

  

FetchError:对http://localhost:8080/graphql的请求失败,原因:socket挂断

0 个答案:

没有答案