читать текстовый файл в текущем каталоге nodejs - PullRequest
0 голосов
/ 03 августа 2020

У меня есть код node js, который приведен ниже.

код выполняется следующим образом.

  1. Получить информацию о запросе Переменная беседы.

  2. Заменить номер запроса внутри файла query_request.txt.

  3. Выполнить запрос SOAP, используя указанный выше файл .txt.

  4. Отправьте результат обратно на сервер.

Код:

invoke:async (conversation, done) => {
        // Get query from incoming message
    const text = conversation.text();
    var query = conversation.properties().query;
    conversation.logger().info('Query '+query );
        //Soap request modules
    const soapRequest = require('easy-soap-request');
    const path = require('path');
    const fs = require('fs');
    const xml2js = require('xml2js');
    const { match } = require('assert');
        
        // example data
    const url = 'https://cap.soap.com/ws/apf/ticketing?WSDL';
    const sampleHeaders = {
            'user-agent': 'sampleTest',
            'Content-Type': 'application/xml;charset=UTF-8',
            };

        const filenameIn = path.join(__dirname, 'query_request.txt');
        const filenameOut = filenameIn
        var REGEX = /<rfc:ProjectNum>(.+)<\/rfc:ProjectNum>/;
        var fileContent = fs.readFileSync(filenameIn, 'utf8');
        fileContent = fileContent.replace(
            REGEX,
            '<rfc:ProjectNum>' + query + '</rfc:ProjectNum>'
    );
        fs.writeFileSync(filenameOut, fileContent, 'utf8');

        const xml = fs.readFileSync('query_request.txt', 'utf-8');
        
        const { response } = await soapRequest({ url: url, headers: sampleHeaders, xml: xml, timeout: 10000 });  parameter(milliseconds)
        const { headers, body, statusCode } = await response; 
        xml2js.parseString(body,{ mergeAttrs: true }, (err, result) => {
        if(err) {
            conversation.logger().info("ERROR "+err);
            conversation.reply(e).transition('NOK').keepTurn(true);
                  done();
        }
        conversation.logger().info("res: "+result);
        console.log(result)
        conversation.reply(result).transition('OK').keepTurn(true);
        done();

       })

    }

}

Но я получаю ошибку ниже при выполнении этого скрипта на сервере.

Ошибка:

Crash report created but cannot be sent: unhandledRejection
ENOENT
ENOENT: no such file or directory, open 'query_request.txt'
Error: ENOENT: no such file or directory, open 'query_request.txt'
    at Object.fs.openSync (fs.js:646:18)
    at Object.fs.readFileSync (fs.js:551:33)

Может ли кто-нибудь помочь мне решить эту проблему.

1 Ответ

0 голосов
/ 03 августа 2020

Отметьте эту строку:

const xml = fs.readFileSync('query_request.txt', 'utf-8');

Первый аргумент - это имя файла, а не путь к файлу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...