账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    webpack 打包库时出现 window is not defined
    • 2019-04-01 00:00
    • 10
    40
    0

    按照官网的步骤进行库的打包 创建library

    webpack.config.js

    var path = require('path');
    
    module.exports = {
      entry: './src/index.js',
      mode: 'production',
      output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'webpack-numbers.js',
        library: 'webpackNumbers', // 支持多种模式的导出
        libraryTarget: 'umd'
      },
      externals: { 
        lodash: {
          commonjs: 'lodash',
          commonjs2: 'lodash',
          amd: 'lodash',
          root: '_'
        }
      },

    index.js

    import _ from 'lodash';
    import numRef from './ref.json';
    
    export function numToWord(num) {
      return _.reduce(numRef, (accum, ref) => {
        return ref.num === num ? ref.word : accum;
      }, '');
    }
    
    export function wordToNum(word) {
      return _.reduce(numRef, (accum, ref) => {
        return (ref.word.toLowerCase() === word.toLowerCase()) ? ref.num : accum;
      }, -1);
    }

    使用 test.js 测试导出的包在 node 环境能否使用

    const _ = require('lodash') 
    
    const webpackNmuners = require('../dist/webpack-numbers')
    
    console.log(webpackNmuners.numToWord(4))
    
    console.log(webpackNmuners.wordToNum('four'))

    运行时报错

    ReferenceError: window is not defined
      

    查看打包出来的模块,发现确实存在 window 对象
    如果存在 window 对象,那么这个模块就不能在 node 环境中使用
    但是我现在的配置和官网都是一致的,不应该出现这种情况啊
    现在要使库生效,我得手动进入打包后的文件把 window 改为 this
    请问一下这是哪里出了问题,webpack 版本是 webpack 4.29.6

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    更多回答
    扫一扫访问手机版

    回答动态

    师傅被妖怪抓走了:发布了悬赏问题火爆全网的“元宇宙”到底是什么?预计能赚取 1积分收益
    酒后略带风情:发布了悬赏问题Android内存中Graphics与Code占用过高预计能赚取 10积分收益
    扛起拖把扫天下:发布了悬赏问题typescript如何导出接口配置?求解,谢谢!预计能赚取 10积分收益
    发布了悬赏问题Vue 如何改变返回页面的路径?如让B页面只能返回到A页面.预计能赚取 11积分收益
    发布了悬赏问题vue H5移动端;底部bottom固定定位,安卓弹起键盘导致页面变形如何解决?预计能赚取 10积分收益
    发布了悬赏问题请问为什么tomcat8.5 GET请求中文正常,POST请求还需要设置UTF-8.预计能赚取 10积分收益
    发布了悬赏问题vue2.5+ts创建以及引入jq的方法预计能赚取 11积分收益
    情场浪女:发布了悬赏问题import ggplot时报错module 'pandas' has no attribute 'tslib'预计能赚取 10积分收益
    见心书画许老师18753375161:发布了悬赏问题echarts3 legend禁止点击事件,允许悬浮事件预计能赚取 11积分收益
    aa_92cb0bd09f:发布了悬赏问题codewar上的一个问题预计能赚取 11积分收益