描述bug
在测试应用程序并尝试模拟axios(例如axios-mock-adapter,但通常任何axios.create()
调用)时,我遇到了错误 "TypeError: Invalid URL",这是由于函数hasStandardBrowserEnv
的1.6.1版本更改缺少函数isStandardBrowserEnv
中的原始条件typeof window !== 'undefined' && typeof document !== 'undefined';
所致。这导致尝试从文档位置创建和读取url路径,最终尚未初始化。
重现问题
在我的情况下,我在文件.../src/components/my-component/my-component.spec.ts
中使用stencil找到了它:
npm init stencil
npm i axios-mock-adapter
npm i
在文件.../src/components/my-component/my-component.spec.ts
中添加:
import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
const mockAdapter = new MockAdapter(axios);
代码片段
import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
const mockAdapter = new MockAdapter(axios);
预期行为
要么有强制执行"nonstandardBrowser"的可能性,要么保留版本1.6.0的行为。
Axios版本
1.6.1
适配器版本
- 无响应*
浏览器
puppeteer
浏览器版本
20,2,0
Node.js版本
21.1.1
OS
Windows 11
其他库版本
stencil 4.7.2
其他上下文/截图
- 无响应*
6条答案
按热度按时间qybjjes11#
函数hasStandardBrowserEnv缺少原始条件:typeof window !== 'undefined' && typeof document !== 'undefined';
这段代码仍然存在,但已重构为外部常量。
7z5jn7bk2#
这段代码仍然存在,但已重构为外部常量
@DigitalBrainJS - 是的,你说得对。经过进一步调查,我找到了可能的嫌疑人 - 在1.6.0版本中,
platform.isStandardBrowser
是undefined
。原因是常量是从lib/platform/browser/index.js
定义和导出的,但这个模块没有被导入到helpers/isSameURLOrigin.js
中。它的导入状态是:而
platform/index.js
的导入是:不确定这是否最初是有意为之,但在将代码移动到1.6.1版本中的
lib/platform/common/utils.js
更改后,常量现在在测试环境中被评估,因此产生了破坏性更改。hgqdbh6s3#
我正在经历相同的问题。尝试从v0.x升级,主要是修复axios的主要版本中的一个公开漏洞,如这里所示 #6091 。然而,这个问题使得测试无法使用axios,已经成为阻塞。不可能获得一个带有漏洞修复的axios版本,同时测试仍在执行。
suzh9iv84#
你好,
有关于这个问题的解决方案吗?我在升级axios版本后遇到了axios-mock-adapter。
2skhul335#
关于这个问题有什么新消息吗?它目前阻止我们进行更新,因为我们的所有测试(包括Axios)都失败了。
bt1cpqcv6#
我遇到了与1.6.2版本相同的问题。有什么解决办法吗?