问题 “fallbackLoader选项已被弃用 - 替换为”fallback“”


将Angular CLI 1.0.0-beta.26项目升级到Angular CLI 1.0.0-beta.30之后,我收到以下两个警告:

fallbackLoader option has been deprecated - replace with "fallback"
loader option has been deprecated - replace with "use"

作为构建的一部分。


12017
2018-02-06 20:40


起源



答案:


一个 Angular CLI PR已经提交 解决这些警告,所以 这个问题 应该在 1.0.0-beta.31 而且。

要立即解决这些警告,您可以对webpack配置进行以下更改:

loader:          -->  use:
fallbackLoader:  -->  fallback:

注意:如果重新安装 node_modules 你需要重新做这些改变。

细节

对于 Angular CLI 1.0.0-beta.30,在 node_modules/@angular/cli/models/webpack-configs/styles.js 找到全局样式路径部分并从以下位置更改:

    loader: [
      ("css-loader?" + JSON.stringify({ sourceMap: cssSourceMap })),
    ].concat(commonLoaders, loaders),

    fallbackLoader: 'style-loader',

    publicPath: ''

至:

    use: [
      ("css-loader?" + JSON.stringify({ sourceMap: cssSourceMap })),
    ].concat(commonLoaders, loaders),

    fallback: 'style-loader',

    publicPath: ''

对于 Angular CLI 1.0.0-beta.26,在 ./node_modules/angular-cli/models/webpack-build-styles.js 找到全局样式路径部分并从以下位置更改:

    loader: ['css-loader'].concat(commonLoaders, loaders),

    fallbackLoader: 'style-loader',

    publicPath: ''

至:

    use: ['css-loader'].concat(commonLoaders, loaders),

    fallback: 'style-loader',

    publicPath: ''

9
2018-02-06 20:40



确保使用@ angular / cli而不是angular-cli,他们停止更新后者。 - GR Envoy
我不认为这仍然有效,请检查此错误: Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema. - configuration.module.rules[1] has an unknown property 'fallback'. - Anselm
可能是@Lofus--考虑开设一个包含所有细节的新问题,以便共享更多最新信息...... - Jan Nielsen
@Jan Nielsen,进一步调试,我发现fallback属性只是其中的一员 configuration.plugins 并不是 configuration.module.rules。您是否仍然能够像发布的答案一样在use语句旁边运行您的后备? - Anselm


答案:


一个 Angular CLI PR已经提交 解决这些警告,所以 这个问题 应该在 1.0.0-beta.31 而且。

要立即解决这些警告,您可以对webpack配置进行以下更改:

loader:          -->  use:
fallbackLoader:  -->  fallback:

注意:如果重新安装 node_modules 你需要重新做这些改变。

细节

对于 Angular CLI 1.0.0-beta.30,在 node_modules/@angular/cli/models/webpack-configs/styles.js 找到全局样式路径部分并从以下位置更改:

    loader: [
      ("css-loader?" + JSON.stringify({ sourceMap: cssSourceMap })),
    ].concat(commonLoaders, loaders),

    fallbackLoader: 'style-loader',

    publicPath: ''

至:

    use: [
      ("css-loader?" + JSON.stringify({ sourceMap: cssSourceMap })),
    ].concat(commonLoaders, loaders),

    fallback: 'style-loader',

    publicPath: ''

对于 Angular CLI 1.0.0-beta.26,在 ./node_modules/angular-cli/models/webpack-build-styles.js 找到全局样式路径部分并从以下位置更改:

    loader: ['css-loader'].concat(commonLoaders, loaders),

    fallbackLoader: 'style-loader',

    publicPath: ''

至:

    use: ['css-loader'].concat(commonLoaders, loaders),

    fallback: 'style-loader',

    publicPath: ''

9
2018-02-06 20:40



确保使用@ angular / cli而不是angular-cli,他们停止更新后者。 - GR Envoy
我不认为这仍然有效,请检查此错误: Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema. - configuration.module.rules[1] has an unknown property 'fallback'. - Anselm
可能是@Lofus--考虑开设一个包含所有细节的新问题,以便共享更多最新信息...... - Jan Nielsen
@Jan Nielsen,进一步调试,我发现fallback属性只是其中的一员 configuration.plugins 并不是 configuration.module.rules。您是否仍然能够像发布的答案一样在use语句旁边运行您的后备? - Anselm


对于那些使用Angular CLI 1.0.0-beta.26的人来说,识别和解决此问题的正确途径是:

node_modules/angular-cli/models/webpack-configs/styles.js

你应该看到这个:

// load global css as css files
if (globalStylePaths.length > 0) {
    rules.push.apply(rules, baseRules.map(function (_a) {
        var test = _a.test, loaders = _a.loaders;
        return ({
            include: globalStylePaths, test: test, loaders: ExtractTextPlugin.extract({
                loader: [
                    // css-loader doesn't support webpack.LoaderOptionsPlugin properly,
                    // so we need to add options in its query
                    ("css-loader?" + JSON.stringify({ sourceMap: cssSourceMap }))
                ].concat(commonLoaders, loaders),
                fallbackLoader: 'style-loader',
                // publicPath needed as a workaround https://github.com/angular/angular-cli/issues/4035
                publicPath: ''
            })
        });
    }));
}
  • 改变 装载机 至 use,和 fallbackLoader 至 fallback

  • 另请注意,最新版本已修复此问题。


1
2018-02-11 18:02



我没有在你的答案中看到任何额外的或新的信息,埃利斯...... - Jan Nielsen
看来您指向的路径是.30之前的路径 - 与我在第二部分中注意到的路径相同 细节... - Jan Nielsen
当然,没有什么区别也没什么新意,只是为了帮助人们确定他们到达特定时会看到什么 style.js 文件。 - Ellis Enobun
我已相应修改了它。谢谢 - Ellis Enobun