VUE打包运行npm run build:prod时报错

img

打包vue的时候出现的问题,运行npm run build:prod报错 Cannot call .tap() on a plugin that has not yet been defined. Call plugin('preload').use() first.
尝试过:1、切换版本 2、删除node_modules和package-lock
不知道是否是配置写的有问题附一下配置打包插件的代码

img

看了网上的教程都试过但还是会有这个问题
求指导

https://blog.csdn.net/qq_40259641/article/details/124730930/
看看这个

该回答引用GPTᴼᴾᴱᴺᴬᴵ
根据您提供的错误信息,可能是在使用preload插件之前未定义该插件的原因。为了解决这个问题,您可以尝试以下方法:

1.确保您在webpack配置中正确地引入了preload插件,例如:

const HtmlWebpackPlugin = require('html-webpack-plugin');
const PreloadWebpackPlugin = require('preload-webpack-plugin');

module.exports = {
  // ...
  plugins: [
    new HtmlWebpackPlugin(),
    new PreloadWebpackPlugin(),
    // ...
  ],
  // ...
};


2.确保您已经安装了preload-webpack-plugin插件,如果没有,请运行以下命令进行安装:

npm install --save-dev preload-webpack-plugin


3.如果您已经按照上述步骤进行了配置并安装了preload-webpack-plugin插件,但仍然遇到问题,则可以尝试删除node_modules和package-lock.json文件,然后重新运行npm install命令,以确保您的依赖项是最新的。

参考GPT和自己的思路,根据报错信息,看起来是在配置preload插件时出现了问题。可能是该插件没有被正确定义,导致后续的调用出现了错误。下面是一个可能的解决方案:

确认vue.config.js文件中是否正确配置了preload插件,例如:

module.exports = {
  chainWebpack: config => {
    // 配置 Preload 插件
    config.plugin('preload').tap(options => {
      options[0].as = 'script'
      options[0].include = 'allChunks'
      options[0].fileBlacklist = [/\.map$/, /hot-update\.js$/]
      return options
    })
  }
}

2 确认webpack和vue-cli的版本是否匹配。你可以尝试升级或降级这些依赖包的版本,以便解决问题。
3 如果以上两种方法都没有解决问题,可以尝试删除node_modules和package-lock.json文件,并重新安装依赖包:

rm -rf node_modules package-lock.json
npm install

希望这些方法可以帮助你解决问题。如果还有其他疑问,可以提供更多信息以便更好地帮助你。

根据您提供的错误信息,可能是在Vue CLI中使用了preload插件,但是没有正确配置该插件。请检查您的Vue CLI配置文件,查看是否正确设置了该插件。如果您没有明确地配置该插件,请尝试在Vue CLI配置文件中添加以下内容:

module.exports = {
  // ...
  chainWebpack: config => {
    // ...
    config.plugin('preload').tap(options => {
      options[0].include = 'initial';
      return options;
    });
    // ...
  },
  // ...
};

在这个示例中,我们使用chainWebpack方法来配置webpack,并为preload插件添加了选项。请注意,这是Vue CLI v3的示例代码。如果您使用的是Vue CLI v4或v5,请参考相应版本的文档进行配置。

如果您已经正确配置了preload插件,但仍然遇到问题,请尝试更新Vue CLI和webpack到最新版本,并重新安装npm依赖项。

请参考下这个吧

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
这个错误通常是由于在使用 vue-cli-plugin-webpack 4.x版本时,没有正确的设置 preloading/prefetching,导致build时出现问题。

以下是一个可能的解决方案:

  1. 确认使用了正确的vue-cli-plugin-webpack版本(需要 4.x 版本或更高版本):
vue add webpack

或升级:

vue upgrade --mode overwrite
  1. 确认在vue.config.js文件中添加了preload插件:
module.exports = {
  chainWebpack: config => {
    const preload = 'preload';
    config.plugins.delete(preload);
    config.plugin(preload).use(PreloadPlugin, [{
      rel: preload,
      as(entry) {
        if (/\.css$/.test(entry)) return 'style';
        if (/\.woff$/.test(entry)) return 'font';
        if (/\.png$/.test(entry)) return 'image';
        return 'script';
      },
      include: 'asyncChunks'
    }]);
  }
};
  1. 尽量使用 yarn 安装依赖项,并删除 package-lock.json 文件和 node_modules 目录。

如果仍然存在问题,请提供更详细的错误信息和 vue.config.js 文件的完整代码。
如果我的回答解决了您的问题,请采纳!

该回答引用自ChatGPT:
根据报错信息,可能是plugin('preload')未被定义,因此需要确保在使用.tap()方法之前正确定义了这个插件。你可以检查你的webpack配置文件中是否正确配置了HtmlWebpackPlugin和preload插件,并按照正确的顺序调用它们。

以下是一个示例webpack配置文件,其中包含HtmlWebpackPlugin和preload插件的正确使用方法,供参考:

const HtmlWebpackPlugin = require('html-webpack-plugin');
const PreloadWebpackPlugin = require('preload-webpack-plugin');

module.exports = {
  // ...
  plugins: [
    new HtmlWebpackPlugin({
      template: './public/index.html',
      filename: 'index.html',
      inject: true,
      hash: true,
    }),
    new PreloadWebpackPlugin({
      rel: 'preload',
      as(entry) {
        if (/\.css$/.test(entry)) return 'style';
        if (/\.woff$/.test(entry)) return 'font';
        if (/\.png$/.test(entry)) return 'image';
        return 'script';
      },
      include: 'allAssets',
    }),
  ],
};


在这个示例中,首先将HtmlWebpackPlugin插件实例化并传递必要的参数,然后实例化PreloadWebpackPlugin插件,并按正确的顺序调用它们。

如果你已经按照上述示例进行了配置,但仍然出现相同的错误,请尝试使用npm install命令重新安装所有依赖项,并确保所有依赖项都是最新的。

这个错误通常是由于 webpack 插件配置的问题导致的。你提供的错误信息提示是 preload 插件没有定义,可能是你没有正确的配置 preload 插件或者其他插件。可以尝试检查你的配置文件。

另外,你可以尝试使用以下方法解决此问题:

1.确认你的插件配置正确且按照正确的顺序加载。根据错误提示信息,首先加载 preload 插件,确保你的配置文件中的 preload 插件在其他插件之前被加载。

2.如果你的插件配置正确,则可能是版本不兼容导致的问题。你可以尝试将 webpack 和相关插件的版本更新到最新版本,然后重新构建项目。

3.另外,你可以尝试清除缓存并重新安装依赖。删除 node_modules 和 package-lock.json,然后重新安装依赖,运行命令 npm cache clean --force,最后再运行 npm install 命令重新安装依赖。

关于打包插件的配置,下面是一个简单的示例,供参考:

const PreloadWebpackPlugin = require('@vue/preload-webpack-plugin');

module.exports = {
  // ...其他配置
  plugins: [
    new PreloadWebpackPlugin({
      rel: 'preload',
      include: 'allChunks',
      as(entry) {
        if (/\.css$/.test(entry)) return 'style';
        if (/\.woff$/.test(entry)) return 'font';
        if (/\.png$/.test(entry)) return 'image';
        return 'script';
      },
    }),
    // ...其他插件配置
  ],
};


题主,这个问题我来替你解决,若有帮助,还望采纳,点击回答右侧采纳即可。

(1)第一步

        npm cache clean --force

(2)第二步删除node_modules文件夹

        linux上: rm -rf node_modules

        window上:直接手动删除

《3)如果有package-lock. json文件就删除它,没有不用管,直接跳到第(4)步

        linux上: rm -rf package-lock.json
        window上:直接手动删除

(4)安装模块

npm install

(5)再次build

npm run build