Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取浏览器的响应对象_Javascript_Node.js_Express - Fatal编程技术网

Javascript 获取浏览器的响应对象

Javascript 获取浏览器的响应对象,javascript,node.js,express,Javascript,Node.js,Express,嗨,我在NODEJS的router.js中有一个函数: const authenticateUser = (req, res, next) => { //something }; 当我的应用程序运行时,将调用此函数。我需要检查响应对象。是否有任何方法可以将我的响应对象打印到客户端,即浏览器,或以显示内部对象的正确JSON格式打印。使用res.send(您的\u对象)。它将向浏览器发送响应。我认为将服务器消息记录到用户浏览器控制台的一种方法可能是打印脚本标记,在该中,您必须控制台。记录

嗨,我在NODEJS的router.js中有一个函数:

const authenticateUser = (req, res, next) => {
  //something
};

当我的应用程序运行时,将调用此函数。我需要检查响应对象。是否有任何方法可以将我的响应对象打印到客户端,即浏览器,或以显示内部对象的正确JSON格式打印。

使用
res.send(您的\u对象)
。它将向浏览器发送响应。

我认为将服务器消息记录到用户浏览器控制台的一种方法可能是打印
脚本
标记,在该
中,您必须
控制台。记录
(或
控制台。错误
)您的服务器消息

const authenticateUser = (req, res, next) => {
  // ...
  res.write(`<script>console.log('server log:', ${JSON.stringify(your_object)})</script>`)
  // ...
  // res.end();
};

const authenticateUser=(请求、恢复、下一步)=>{
// ...
res.write(`console.log('server log:',${JSON.stringify(您的_对象)})`)
// ...
//res.end();
};
当然,您可以将日志记录部分封装在函数或类中,或者更好的是,封装在带有模板文本方法的类中

//any-file.mjs
//将消息记录到浏览器控制台
类浏览器记录器{
构造函数({method=“log”,…tail}){
assign(this,{method,…tail})
}
//模板文字
打印(字符串,…参数){
//连接参数
var all=strings.flatMap((s,i)=>[s,args[i]]
//在浏览器控制台上打印
返回`console.${this.method}(${
all.map(this.handler.bind(this))
})`
}
处理程序(当前){
返回JSON.stringify(当前)
}
}
//这是BrowserLogger类的几个实例
//一个用于一般消息
常量记录器=新的浏览器记录器({})
//一个是错误
const errorLogger=新浏览器记录器({
方法:“错误”,
//错误的自定义处理程序:)
处理程序(e){
返回此.constructor.prototype.handler(e instanceof Error?e.stack:e)
}
})
var obj={foo:bar}
常量验证器=(请求、恢复、下一步)=>{
// ...
//通用消息
res.write(logger.print`obj:${obj},msg:${{{foobar:true}}}`)
//错误
res.write(errorLogger.print`${
新错误(“来自服务器的错误消息!”)
}`)
// ...
res.end();
};
//在服务器中使用authenticateUser
从“http”导入http
var端口=8080
var server=http.createServer(authenticateUser)
监听(端口);

那么如何在浏览器控制台上打印?对象是res。我想打印res。因为req有一些参数请求,所以我想查看res中的值。对于控制台,您可以使用
console.log(res)
,但这里的控制台是终端控制台,而不是浏览器控制台。你可以在上面看到结果。因为nodejs在后端执行,而不是在客户端。yups这是我希望在浏览器上打印的主要查询。如果有任何解决方案是这样的,因为在控制台上检查对于如此大的对象来说太难了。您可以使用在线工具来缩小json。网上有各种各样的工具
// any-file.mjs

// log messages to the browser console
class BrowserLogger {
    constructor({method = "log", ...tail}) {
        Object.assign(this, {method, ...tail})
    }

    // template literal
    print(strings, ...args) {
        // joins arguments
        var all = strings.flatMap( (s, i) => [s, args[i]])
        // print on the browser console
        return `<script>console.${this.method}(${
            all.map(this.handler.bind(this))
        })</script>`
    }

    handler(current){
        return JSON.stringify(current)
    }
}

// crete a few instances of the BrowserLogger class
// one for generic messages
const logger = new BrowserLogger({})
// one for errors
const errorLogger = new BrowserLogger({
    method: "error",
    // custom handler for errors :)
    handler(e){
        return this.constructor.prototype.handler(e instanceof Error ? e.stack : e)
    }
})

var obj = {foo:"bar"}

const authenticateUser = (req, res, next) => {

    // ...

    // generic messages
    res.write(logger.print `obj:${obj}, msg:${{ foobar: true }}`)
    // error
    res.write(errorLogger.print `${
        new Error("error message from the server!")
    }`)

    // ...

    res.end();
};

// use authenticateUser in a server
import http from "http"
var port = 8080
var server = http.createServer(authenticateUser)
server.listen(port);