项目无法发布问题 -- vue is not defined

在构建Vue项目时遇到页面报错,原因是项目未包含必要的依赖。原本项目作为工具类库上传到npm,依赖由使用方自行处理。为使项目独立运行,需在配置中取消externals部分对vue等库的排除,并在package.json中添加线上环境的依赖。通过修改webpack配置并更新package.json,确保项目内部包含所有必需的依赖,从而解决报错问题。
摘要由CSDN通过智能技术生成

在这里插入图片描述
在项目build之后,访问页面,报错,无法找到vue,查看配置发现如下

const path = require('path')
const NODE_ENV = process.env.NODE_ENV

function resolve(dir) {
  return path.join(__dirname, dir)
}
module.exports = {
  lintOnSave: true,
  // 设为false打包时不生成.map文件
  productionSourceMap: false,
  // 修改 src 目录 为 examples 目录
  pages: {
    index: {
      entry: 'src/main.js',
      template: 'public/index.html',
      filename: 'index.html'
    }
  },
  configureWebpack: config => {
    console.log('NODE_ENV is :', NODE_ENV)
    if (NODE_ENV === 'production') {
      // 为生产环境修改配置...
      config.externals = {
        axios: 'axios',
        vue: 'vue',
        vueRouter: 'vue-router',
        vuex: 'vuex',
        moment: 'moment'
        // echarts: 'echarts',
        // 'echarts-liquidfill': 'echarts-liquidfill',
        // 'echarts-wordcloud': 'echarts-wordcloud'
      }
      config.performance = {
        hints: false
      }
    } else {
      // 为开发环境修改配置...
    }
  },
  chainWebpack: config => {
    config.resolve.alias
      .set('@', resolve('src'))
      .set('@p', resolve('packages'))
      .set('@u', resolve('src/utils'))
      .set('@m', resolve('src/mixins'))
    // config.module
    //   .rule("js")
    //   .add('src')
    //   .add('/node_modules/')
    //   // .include.add("/packages")
    //   .end()
    //   .use("babel")
    //   .loader("babel-loader")
    //   options({
    //     presets: [
    //       ['@babel/preset-env', {
    //         modules: false
    //       }]
    //     ]
    //   });
  }
}

其中如下配置是webpack的相关配置,因为该项目最开始只是一个工具类项目,是要上传到npm中供各个项目使用的,而各个vue项目在构建的时候,是会自己安装需要的vue等包的,因此不需要在该项目中安装这些依赖。但如果要把这个项目作为一个单独的项目发布,则需要安装这些依赖。

config.externals = {
        axios: 'axios',
        vue: 'vue',
        vueRouter: 'vue-router',
        vuex: 'vuex',
        moment: 'moment'
        // echarts: 'echarts',
        // 'echarts-liquidfill': 'echarts-liquidfill',
        // 'echarts-wordcloud': 'echarts-wordcloud'
      }

在这里插入图片描述

解决办法

  1. 修改以上配置
config.externals = {
        // axios: 'axios',
        // vue: 'vue',
        // vueRouter: 'vue-router',
        // vuex: 'vuex',
        moment: 'moment'
        // echarts: 'echarts',
        // 'echarts-liquidfill': 'echarts-liquidfill',
        // 'echarts-wordcloud': 'echarts-wordcloud'
      }
  1. 修改package.json文件,增加线上环境下的依赖。
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值