Cypress - Error: Can't resolve 'async_hooks'
Cypress - Error: Can't resolve 'async_hooks'
当前行为
我知道此类问题已在 5.1.0
版本中修复,但是...
我正在尝试在 before
挂钩的 Node JS 部分逻辑中播种数据库
我们有 cls-hooked
和另外 1 个用于共享的内部 npm 模块 async_hooks
当我尝试导入和使用任何模块时,我在测试脚本启动时收到崩溃:
Error: Webpack Compilation Error
./node_modules/...[our private module name].../lib/...[file name]....js
Module not found: Error: Can't resolve 'async_hooks' in '/Users/.../node_modules/...[private module or cls-hooked].../lib'
resolve 'async_hooks' in '/Users/.../node_modules/...[private module or cls-hooked].../lib'
Parsed request is a module
using description file: /Users/.../node_modules/...[private module or cls-hooked].../package.json (relative path: ./lib)
Field 'browser' doesn't contain a valid alias configuration
resolve as module
期望的行为
测试脚本启动应该顺利进行 before
钩子执行
重现测试代码
需要 ./cypress/plugins/index.ts
中的某些模块具有下一个类似的逻辑
var async_hooks = require("async_hooks");
var asyncLocalStorage = new async_hooks.AsyncLocalStorage();
...
asyncLocalStorage.getStore();
赛普拉斯版本
^8.1.0
- 8.5.0
Cypress binary version: 8.5.0
Electron version: 13.2.0
Bundled Node version: 14.16.0
尝试过的 Node 版本:14.17.6
和 16.9.1
同样适用于:
Cypress binary version: 7.7.0
Electron version: 12.0.0-beta.14
Bundled Node version: 14.15.1
其他
额外安装 "async_hooks": "^1.0.0"
没有帮助
使用 TS
"typescript": "^4.1.5"
OS
macOS Big Sur 11.16
问题出在 Cypress 中进程浏览器和 NodeJs 的 1 个通用文件中。
在这种情况下,Webpack 使用 'browser' 上下文构建了包,但收到了 NodeJs 上下文逻辑。这就是错误发生的原因。
当我在文件的浏览器部分使用 enum
时,除此之外还导出 NodeJs 逻辑,它 (Webpack) 没有生成 'treeshaking',因此 NodeJs 逻辑被导入到浏览器处理逻辑的包中。 ♂️
当前行为
我知道此类问题已在 5.1.0
版本中修复,但是...
我正在尝试在 before
挂钩的 Node JS 部分逻辑中播种数据库
我们有 cls-hooked
和另外 1 个用于共享的内部 npm 模块 async_hooks
当我尝试导入和使用任何模块时,我在测试脚本启动时收到崩溃:
Error: Webpack Compilation Error
./node_modules/...[our private module name].../lib/...[file name]....js
Module not found: Error: Can't resolve 'async_hooks' in '/Users/.../node_modules/...[private module or cls-hooked].../lib'
resolve 'async_hooks' in '/Users/.../node_modules/...[private module or cls-hooked].../lib'
Parsed request is a module
using description file: /Users/.../node_modules/...[private module or cls-hooked].../package.json (relative path: ./lib)
Field 'browser' doesn't contain a valid alias configuration
resolve as module
期望的行为
测试脚本启动应该顺利进行 before
钩子执行
重现测试代码
需要 ./cypress/plugins/index.ts
中的某些模块具有下一个类似的逻辑
var async_hooks = require("async_hooks");
var asyncLocalStorage = new async_hooks.AsyncLocalStorage();
...
asyncLocalStorage.getStore();
赛普拉斯版本
^8.1.0
- 8.5.0
Cypress binary version: 8.5.0
Electron version: 13.2.0
Bundled Node version: 14.16.0
尝试过的 Node 版本:14.17.6
和 16.9.1
同样适用于:
Cypress binary version: 7.7.0
Electron version: 12.0.0-beta.14
Bundled Node version: 14.15.1
其他
额外安装 "async_hooks": "^1.0.0"
没有帮助
使用 TS
"typescript": "^4.1.5"
OS
macOS Big Sur 11.16
问题出在 Cypress 中进程浏览器和 NodeJs 的 1 个通用文件中。
在这种情况下,Webpack 使用 'browser' 上下文构建了包,但收到了 NodeJs 上下文逻辑。这就是错误发生的原因。
当我在文件的浏览器部分使用 enum
时,除此之外还导出 NodeJs 逻辑,它 (Webpack) 没有生成 'treeshaking',因此 NodeJs 逻辑被导入到浏览器处理逻辑的包中。 ♂️