当前位置: 首页 > 知识库问答 >
问题:

抛出新的TypeError('请求路径包含未转义字符')

哈朗
2023-03-14

我在尝试运行node js应用程序时遇到此错误:

_http_客户端。js:127抛出新的TypeError('请求路径包含未替换的字符')^

TypeError:请求路径包含未转义字符在新的客户端请求(_http_client.js:127: 13)在Object.request(http.js:38: 10)在Object.exports.get持续时间(/用户/paulcarron/git/集成-测试运行/模块/getEventLog.js:53: 20) /Users/paulcarron/git/integration-test-runner/modules/jobRunningService.js:75: 21在IncomingMessage。(/用户/paulcarron/git/集成-测试运行/模块/getEventLog.js:35: 13)在emitNo(events.js:111: 20)在IncomingMessage.emit(events.js:208: 7)在endReadableNT(_stream_readable.js:1056: 12)在_combinedTickCallback(内部/进程/next_tick.js:138: 11)在进程。_tickCallback(内部/进程/next_tick.js:180: 9)

经过一些调查,我得出结论,这是因为getEventLog.js中的myId(参见问题底部的代码)。这个函数在不同的脚本中调用整个脚本:

child.stderr.on('data', function(uuid, data) {

  getEventLog.getId(uuid, function(err, id){
    if(err) return console.log(err)
    getEventLog.getDuration(id, function(err, duration){
        if(err) return console.log(err)
        jobLogger.info(escape(data) + "<br />");
    })
  });

});

我认为myId中可能有空格,所以我添加了一个控制台。记录(“myId:myId)并发现它返回了myId:[对象]。如何修复此问题,使myId是正确格式的ID?

var http = require("http");
var fs = require('fs');
var async = require('async');
var readline = require('readline')
//var db = require('./dbPool');

//get file name
var options =  {
    "method" : "GET",
    "hostname" : "127.0.0.1",
    "port" : "18080",
    "path" : "/api/v1/applications/"
};

exports.getId = function (uuid, callback) {
    var req = http.request(options, function (res) {

        var chunks = [];

        res.on("data", function (chunk) {
            chunks.push(chunk);
        });

        res.on("end", function () {
            var body = JSON.parse(Buffer.concat(chunks));

            var arrFound = Object.keys(body).filter(function(key) {
                if (body[key].name.indexOf(uuid) > -1) { 
                    return body[key].name;
                }
            }).reduce(function(obj, key){
                obj = body[key].id;
                return obj;
            }, {});
            callback(null, arrFound);
        });
    });
    req.end();
}

exports.getDuration = function (myId, callback) {
    //getEventLog.getId(function(err, id){

    //get file name
    var options =  {
        "method" : "GET",
        "hostname" : "127.0.0.1",
        "port" : "18080",
        "path" : "/api/v1/applications/" + myId
    };

    var req = http.request(options, function (res) {
        console.log(options)

        var chunks = [];

        res.on("data", function (chunk) {
            chunks.push(chunk);
        });

        res.on("end", function () {
            var body = JSON.parse(Buffer.concat(chunks));

            var attempts = body.attempts

            var arrFound = Object.keys(body).filter(function(key) {

                return attempts[0].duration;

            }).reduce(function(obj, key){
                obj = body.attempts[0].duration;
                return obj;
            }, {});
            //console.log(arrFound);
            callback(null, arrFound);
        });
    });
    req.end();
 //   })
};

共有1个答案

刘元青
2023-03-14

这里的问题是myId是一个JSON对象,而不是一个字符串。这意味着返回的html页面比我所需的JSON位置还多。

 类似资料:
  • 问题内容: 我尝试使用以下方法安装node.js模块: 但我得到这个错误: 可能正在发生这种情况,因为我使用代理服务器,但我通过这种方式设置了代理服务器,以允许从网络外部的ips下载 我希望你能帮帮我 问题答案: 从命令行设置代理。 如果仍然发生错误,请再试一次。 这些为我工作。(请参阅http://sushichop.blogspot.jp/2013/01/npm- install.html )

  • 问题内容: 我正在构建一个模拟器,以将JSON数据发布到正在运行的服务中。 JSON应该如下所示: 我在Chrome中使用“高级REST客户端”进行了尝试,效果很好。ServiceStack Web服务会正确解析日期获取。 因此,关键是编写一个传感器模拟器,将这样的数据发布到Web服务。 我用Java创建了它,因此可以在树莓派上运行它。 这是代码: 该程序的输出如下: 这里的问题是JSONObje

  • 我使用Localstack和Test容器((test容器: localstack: 1.15.2))进行集成测试,并在测试设置中设置秘密,如下所示:代码示例 现在,测试因错误而崩溃: com.amazonaws.services.secretsmanager.model.AWSSecretsManagerException:请求中包含的安全令牌无效。(服务:AWSSecuresManager;状态

  • 问题内容: 我正在尝试以编程方式找到Linux上的路径,据我所知,实际上这意味着找到GCC认为的路径。(这是真的吗?Clang是如何做到的?) 根据http://gcc.gnu.org/onlinedocs/cpp/Search- Path.html的 介绍,某些组件涉及CPU架构和GCC版本;后者尤其棘手;我想可以通过运行和解析输出(或)获得它,但这似乎充其量是不佳的,最坏的是它是脆弱的。假设某

  • 本文向大家介绍java下载url路径包含中文需要转义的操作,包括了java下载url路径包含中文需要转义的操作的使用技巧和注意事项,需要的朋友参考一下 大家看这个url: http://127.0.0.1:9997/file/江苏省地震应急预案(二级).docx 应为url路径中有中文没有转义,输入流报错 The valid characters are defined in RFC 7230 a

  • 问题内容: 我正在处理DomDocument,这基本上是SOAP Web服务的XML结果。给你一个主意,这就是它的样子 是的,ChildNode的值是一个已转义输出的字符串,并且是打包在此XML中的XML。我通常执行DomDocument处理,例如 在检查了上面的代码之后,您意识到即使节点为ParentNode和NodeName节点返回了正确的值,但在访问getNodeValue()时它仍返回了空