从 rxjs 添加诸如“fromPromise”之类的东西在 webpack 4 中不起作用
Adding things like `fromPromise` from rxjs doesn't work in webpack 4
我在我们的一个大项目中尝试了无数次升级到 webpack 4,但每次我这样做都会遇到多个错误,我将这些错误追溯到 rxjs。直到我阅读了这么多看起来相似的问题之后我才打开这个问题,但是 none 解决了我的问题,我仍然对为什么会发生这种情况感到困惑。
在某个地方,我这样做:
import { Observable } from 'rxjs/Observable';
// Use Observable.fromPromise()
在 vendor.ts
中,这是我用来导入东西的入口模块,我这样做:
import 'rxjs/add/observable/fromPromise';
请注意,这在 webpack 3 上工作得很好。只有在我更新到 webpack 4 后,我才会遇到问题。此外,如果我改为从 rxjs/Rx
导入,这个特定问题似乎已解决,这意味着它是与 fromPromise
未导入相关的问题。
在更新之前,我在 webpack 3 中有以下 webpack 配置:
new webpack.optimize.CommonsChunkPlugin({
names: ['vendor', 'polyfills'],
}),
更新后我在 webpack 4 中有这个:
optimization: {
splitChunks: {
cacheGroups: {
vendor: {
test: /[\/]node_modules[\/]/,
name: 'vendor',
chunks: 'all',
},
},
},
},
环境
运行时:所有主流浏览器
RxJS 版本:6.2.2
Webpack:4.16.3(以及所有版本的 webpack 4)
在对 webpack 进行了大量修改之后,它现在似乎可以正常工作了。我不知道出了什么问题,也许这只是 webpack 4 中的一个更改。但重要的是如果您使用的是最新的 rxjs 包,请使用 from
而不是 fromPromise
。
我在我们的一个大项目中尝试了无数次升级到 webpack 4,但每次我这样做都会遇到多个错误,我将这些错误追溯到 rxjs。直到我阅读了这么多看起来相似的问题之后我才打开这个问题,但是 none 解决了我的问题,我仍然对为什么会发生这种情况感到困惑。
在某个地方,我这样做:
import { Observable } from 'rxjs/Observable';
// Use Observable.fromPromise()
在 vendor.ts
中,这是我用来导入东西的入口模块,我这样做:
import 'rxjs/add/observable/fromPromise';
请注意,这在 webpack 3 上工作得很好。只有在我更新到 webpack 4 后,我才会遇到问题。此外,如果我改为从 rxjs/Rx
导入,这个特定问题似乎已解决,这意味着它是与 fromPromise
未导入相关的问题。
在更新之前,我在 webpack 3 中有以下 webpack 配置:
new webpack.optimize.CommonsChunkPlugin({
names: ['vendor', 'polyfills'],
}),
更新后我在 webpack 4 中有这个:
optimization: {
splitChunks: {
cacheGroups: {
vendor: {
test: /[\/]node_modules[\/]/,
name: 'vendor',
chunks: 'all',
},
},
},
},
环境
运行时:所有主流浏览器
RxJS 版本:6.2.2
Webpack:4.16.3(以及所有版本的 webpack 4)
在对 webpack 进行了大量修改之后,它现在似乎可以正常工作了。我不知道出了什么问题,也许这只是 webpack 4 中的一个更改。但重要的是如果您使用的是最新的 rxjs 包,请使用 from
而不是 fromPromise
。