[NodeJS] Jest 环境下 Axios 请求报错: Cross origin http://localhost forbidden

本博客站点已全量迁移至 DevDengChao 的博客 https://blog.dengchao.fun , 后续的新内容将优先在自建博客站进行发布, 欢迎大家访问.

问题概述

刚刚在 NodeJS 环境下对服务端接口进行 Jest 单元测试时发现 axios 报错, 说是出现了跨域请求.

    Error: Cross origin http://localhost forbidden
        at dispatchError (\node_modules\jsdom\lib\jsdom\living\xhr\xhr-utils.js:62:19)
        at Object.validCORSHeaders (\node_modules\jsdom\lib\jsdom\living\xhr\xhr-utils.js:74:5)
        at receiveResponse (\node_modules\jsdom\lib\jsdom\living\xhr\XMLHttpRequest-impl.js:797:19)
        at Request.<anonymous> (\node_modules\jsdom\lib\jsdom\living\xhr\XMLHttpRequest-impl.js:658:36)
        at Request.emit (events.js:315:20)
        at Request.onRequestResponse (\node_modules\request\request.js:1059:10)
        at ClientRequest.emit (events.js:315:20)
        at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:641:27)
        at HTTPParser.parserOnHeadersComplete (_http_common.js:126:17)
        at Socket.socketOnData (_http_client.js:509:22) undefined

确认服务端没有对 localhost 进行跨域限制, 并且请求也不是从浏览器环境发起的后, 推断是 axios 或者测试环境 Jest 出现了问题.

解决方案

package.json 文件的 jest 块中加入 testEnvironment 配置项, 并将其指定为 node 即可.

package.json:

{
	// ...
	"jest":{
		"testEnvironment": "node"
	}
}

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值