首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >webpack dll配置不起作用

webpack dll配置不起作用
EN

Stack Overflow用户
提问于 2018-06-01 07:57:36
回答 2查看 1.1K关注 0票数 1

我试着用webpack 4创建动态链接库配置,但我一直收到:

代码语言:javascript
复制
Uncaught ReferenceError: React is not defined

我的配置非常简单:

代码语言:javascript
复制
module.exports = {
  entry: {
    vendor: ["react", "react-dom"]
  },
  output: {
    filename: "[name]-manifest.dll.js",
    path: base.path.project("build"),
    library: "[name]",
    libraryTarget: "umd"
  },
  plugins: [
    new webpack.DllPlugin({
      name: "[name]",
      path: base.path.project("build/[name]-manifest.json"),
      context: base.path.src("app")
    })
  ]
};

在我的开发配置中,我使用dllreferenceplugin。

代码语言:javascript
复制
new webpack.DllReferencePlugin({
  context: base.path.src("app"),
  manifest: require("../build/vendor-manifest.json")
})

当然,我在开发配置中定义了外部变量,因为我不想在构建开发js文件时再次包含它们:

代码语言:javascript
复制
  externals: {
    react: "React",
    "react-dom": "ReactDOM"
  }

在我的代码中我导入了React。

代码语言:javascript
复制
import * as React from "react";

但在浏览器中,我一直看到React未定义。

我已经谷歌了所有的东西,还没有找到任何解决这个问题的方法?

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

发布于 2018-06-01 08:13:00

我自己使用import React, { Component } from 'react';。JSX希望react在作用域内。

在很大程度上,只有在创建库时才会看到外部变量的使用,比如其他人使用React使用的npm模块。React将在包中标记为外部,以避免在本地应用程序和模块内部双重包含React。

如果这是您的应用程序构建过程,而不是npm模块,则不应将react标记为externals。您的捆绑包需要包含react。将react标记为externals会将其从捆绑包中排除,并使您有责任在加载捆绑包之前手动加载React。

外部配置选项提供了一种从输出包中排除依赖项的方法。

请参阅webpack外部here上的文档。

票数 0
EN

Stack Overflow用户

发布于 2019-04-24 14:00:38

只需从您的应用程序删除外部属性,webpack配置dll文件,包括在您的index.html文件。

我也面临着同样的问题,因为我同时使用了dllReference插件和外部插件。

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

https://stackoverflow.com/questions/50634360

复制
相关文章

相似问题

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