首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >webpack umd库和外部文件

webpack umd库和外部文件
EN

Stack Overflow用户
提问于 2015-12-13 14:57:57
回答 1查看 8.8K关注 0票数 11

我想将我的react组件打包为一个umd库。

下面是webpack我的背景:

代码语言:javascript
复制
module.exports = {
  devtool: 'eval',
  entry: [
    './lib/index'
  ],
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'lib.js',
    library: 'lib',
    libraryTarget: 'umd'
  },
  resolve: {
    extensions: ['', '.js']
  },
  module: {
    loaders: [
      {
        test: /\.js$/,
        loaders: ['babel'],
        exclude: /node_modules/
      }
    ]
  },
  externals: {
    "react": "React"
  }
}

然后,在我以这种方式在我的另一个组件中要求包之后

example.js

代码语言:javascript
复制
import React, {Component} from 'react';
import ReactDOM from 'react-dom';
import {lib} from "../dist/lib";

而上面组件的webpack设置是:

代码语言:javascript
复制
module.exports = {
  devtool: 'eval',
  entry: [
    './examples/example'
  ],
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'bundle.js',
    publicPath: '/static/'
  },
  resolve: {
    extensions: ['', '.js']
  },
  module: {
    loaders: [
      {
        test: /\.js$/,
        loaders: ['babel'],
        exclude: /node_modules/
      }
    ]
  }
}

编译example.js文件后,它将显示错误:

代码语言:javascript
复制
Line 3: Did you mean "react"?
  1 | (function webpackUniversalModuleDefinition(root, factory) {
  2 |   if(typeof exports === 'object' && typeof module === 'object')
> 3 |       module.exports = factory(require("React"));
    |                                    ^
  4 |   else if(typeof define === 'function' && define.amd)
  5 |       define(["React"], factory);
  6 |   else if(typeof exports === 'object')

我认为错误来自外部设置,因为在我删除externals: {react: "React"}之后,它就能工作了。

我搜索一些相关的答案,但无法修复。

有人知道这件事吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-13 17:39:51

我找到答案了!

原因是umd需要设置不同的外部值(引用文档)。

因为我把外部反应设置为{react: React},webpack会尝试找到一个名为React的包。

因此,需要在不同的模块定义中设置不同的值。

代码语言:javascript
复制
externals: {
  "react": {
    root: 'React',
    commonjs2: 'react',
    commonjs: 'react',
    amd: 'react'
  }
}

那它就修好了!

票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34252424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档