Docusaurus 2 应用程序试图解决开发依赖性
Docusaurus 2 App trying to resolve dev dependencies
我有一个 Docusaurus 2(使用版本 2.0.0-beta.9
)应用程序,我正在使用 msw 编写一些测试。测试工作正常问题是当 运行 npm start
(运行 docusaurus start
)时,我看到 docusaurus 试图解决 msw 依赖关系,这没有意义,因为我只是从测试文件中引用此依赖项。是否可以排除由 docusaurus 拥有的底层 webpack 配置处理的 msw
开发依赖?
这是日志
> website@0.0.0 start
> docusaurus start --host 0.0.0.0
Starting the development server...
Docusaurus website is running at: http://localhost:3000/
✖ Client
Compiled with some errors in 6.34s
ℹ 「wds」: Project is running at http://0.0.0.0:3000/
ℹ 「wds」: webpack output is served from /
ℹ 「wds」: Content not from webpack is served from /Users/danielcaldas/code/my-project/website
ℹ 「wds」: 404s will fallback to /index.html
Module not found: Error: Can't resolve 'util' in '/Users/danielcaldas/code/my-project/website/node_modules/@mswjs/interceptors/lib/interceptors/ClientRequest'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "util": require.resolve("util/") }'
- install 'util'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "util": false }
Module not found: Error: Can't resolve 'http' in '/Users/danielcaldas/code/my-project/website/node_modules/@mswjs/interceptors/lib/interceptors/ClientRequest'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
编辑
这是我目前的解决方法。因此,在此过程中会弹出更多错误。我在本地安装了这些后备缺少的依赖项,并在我的 node_modules
中手动编辑了 docusaurus 的 webpack 配置(我知道不是很好...),
node_modules/@docusaurus/core/lib/webpack/base.js
有以下内容:
{
// ...
resolve: {
// ...
fallback: {
assert: require.resolve('assert/'),
http: require.resolve('stream-http'),
https: require.resolve('https-browserify'),
os: require.resolve('os-browserify/browser'),
stream: require.resolve('stream-browserify'),
timers: require.resolve('timers-browserify'),
tty: require.resolve('tty-browserify'),
zlib: require.resolve('browserify-zlib'),
}
},
// ...
}
编辑 2
好像docusuarus webpack在文件夹__test__
下扫描!将 __test__
重命名为 __tests__
解决了这个问题,没有破解 webpack 配置。
任何帮助将不胜感激!谢谢!
我建议检查您是否没有在主 Docusaurus 代码中导入 msw
。仅当您在浏览器中使用 MSW 进行模拟时,这才相关。尽管如此,在项目的源文件中快速 Cmd+F 应该就足够了。
如果您觉得您的测试文件是由 Docusaurus build 处理的,请仍然检查是否存在可疑导入。 @mswjs/interceptors
依赖项导入确实从某处出现,因此很可能存在导入 msw/node
或其他模块的代码。密切关注导入,特别是如果您使用自定义模块结构来启用模拟(即单个 mocks/index.js
文件 returns 正确的 setupWorker
/setupServer
基于进口商的环境)。
我有一个 Docusaurus 2(使用版本 2.0.0-beta.9
)应用程序,我正在使用 msw 编写一些测试。测试工作正常问题是当 运行 npm start
(运行 docusaurus start
)时,我看到 docusaurus 试图解决 msw 依赖关系,这没有意义,因为我只是从测试文件中引用此依赖项。是否可以排除由 docusaurus 拥有的底层 webpack 配置处理的 msw
开发依赖?
这是日志
> website@0.0.0 start
> docusaurus start --host 0.0.0.0
Starting the development server...
Docusaurus website is running at: http://localhost:3000/
✖ Client
Compiled with some errors in 6.34s
ℹ 「wds」: Project is running at http://0.0.0.0:3000/
ℹ 「wds」: webpack output is served from /
ℹ 「wds」: Content not from webpack is served from /Users/danielcaldas/code/my-project/website
ℹ 「wds」: 404s will fallback to /index.html
Module not found: Error: Can't resolve 'util' in '/Users/danielcaldas/code/my-project/website/node_modules/@mswjs/interceptors/lib/interceptors/ClientRequest'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "util": require.resolve("util/") }'
- install 'util'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "util": false }
Module not found: Error: Can't resolve 'http' in '/Users/danielcaldas/code/my-project/website/node_modules/@mswjs/interceptors/lib/interceptors/ClientRequest'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
编辑
这是我目前的解决方法。因此,在此过程中会弹出更多错误。我在本地安装了这些后备缺少的依赖项,并在我的 node_modules
中手动编辑了 docusaurus 的 webpack 配置(我知道不是很好...),
node_modules/@docusaurus/core/lib/webpack/base.js
有以下内容:
{
// ...
resolve: {
// ...
fallback: {
assert: require.resolve('assert/'),
http: require.resolve('stream-http'),
https: require.resolve('https-browserify'),
os: require.resolve('os-browserify/browser'),
stream: require.resolve('stream-browserify'),
timers: require.resolve('timers-browserify'),
tty: require.resolve('tty-browserify'),
zlib: require.resolve('browserify-zlib'),
}
},
// ...
}
编辑 2
好像docusuarus webpack在文件夹__test__
下扫描!将 __test__
重命名为 __tests__
解决了这个问题,没有破解 webpack 配置。
任何帮助将不胜感激!谢谢!
我建议检查您是否没有在主 Docusaurus 代码中导入 msw
。仅当您在浏览器中使用 MSW 进行模拟时,这才相关。尽管如此,在项目的源文件中快速 Cmd+F 应该就足够了。
如果您觉得您的测试文件是由 Docusaurus build 处理的,请仍然检查是否存在可疑导入。 @mswjs/interceptors
依赖项导入确实从某处出现,因此很可能存在导入 msw/node
或其他模块的代码。密切关注导入,特别是如果您使用自定义模块结构来启用模拟(即单个 mocks/index.js
文件 returns 正确的 setupWorker
/setupServer
基于进口商的环境)。