是否可以将“require”和“import”与Webpack一起使用?

2023-11-25

我们必须更新一些依赖项才能切换到 Webpack 4,并且在尝试混合时在 webpack 中收到警告,在浏览器中收到错误import and require在同一个项目内。

我们有一个very大型项目(300+ 个文件),其中一些文件使用var Pkg = require('./fileName'); and module.exports = MyComponent当其他人使用import Pkg from './fileName' and export default MyComponent并且希望不必使用 require/module.exports 逐一检查并更新它们。

网页包警告:

WARNING in ./index.js 15:17-20
"export 'default' (imported as 'App') was not found in './App.jsx'

浏览器错误:

App.jsx:20 Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>'
    at Module.eval (App.jsx:20)
    at eval (App.jsx:21)
    at Module../App.jsx (bootstrap:83)
    at __webpack_require__ (bootstrap:19)
    at eval (index.js:2)
    at Module../index.js (bootstrap:83)
    at __webpack_require__ (bootstrap:19)
    at bootstrap:83
    at bootstrap:83

package.json 依赖版本:

"@babel/cli": "^7.2.3",
"@babel/core": "^7.4.4",
"@babel/preset-env": "^7.4.4",
"@babel/preset-react": "^7.0.0",
"babel-loader": "^8.0.5",
"webpack": "^4.31.0",
"webpack-cli": "^3.3.2",

.babelrc

{
  "presets": [
    "@babel/preset-react",
    "@babel/preset-env"
  ]
}

.browserlistrc

{
  "browserslist": [
      ">0.25%",
      "ie 11",
      "not op_mini all"
  ]
}

网络包配置:

rules: [
    {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        use: [{
            loader: 'babel-loader',
            options: {
                babelrc: true
            }
        }],
    },
    // some other rules...   
]

index.js

import App from './App'

// Expose App to the window so we can utilize 
// it from within <script> tags
window.App = App

App.js

import React from 'react'
import ReactDOM from 'react-dom'

var App = (function () {
    return {
        route: function (route, properties) {
            return ReactDOM.render(
                <div>component markup</div>, document.getElementById('workspace')
            )
        }
    }
})()

// This works
// export default App

// This breaks
module.exports = App

索引.html

<script>
    App.route('login', {some: 'props'});
</script>

从技术上讲,webpack 会捆绑(但会发出警告,就像您在此处看到的那样)。但是,我们 webpack 团队建议您将代码库中使用的 CommonJS 语法数量限制为尽可能少。

为什么?因为 CommonJS 在许多边缘情况下无法进行静态分析,因此“摆脱”诸如树摇动和范围提升之类的优化。这意味着您的 JavaScript(网站上加载最昂贵的资源)将包含各种死/未使用的代码。

In our webpack 文档你可以观察列出优化救助您会注意到其中之一是代码中的“使用 CommonJS”或“模块”符号。

从长远来看,这将对您的应用程序的 Web 性能产生重大的负面影响!

如果迁移确实很痛苦,那么我会研究一个将在您的代码中运行的 codemod,并且转换需要(如果可能)导入!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以将“require”和“import”与Webpack一起使用? 的相关文章

随机推荐

  • 如何初始化具有默认值的类的函数参数

    我正在 Linux gcc 环境中工作 我需要初始化具有默认值的类的函数参数 当我使用类的临时实例执行此操作时 会出现如下错误 函数参数 的默认参数具有类型 类名 例如 void foo std wstring str std wstrin
  • 是什么导致 Vim 中的替换每行只匹配一个元素?

    我已经对我的自己做了很多改变 vimrc最近 我在某个地方引入了一个不受欢迎的功能 当执行搜索标记每行出现多次的替换命令时 只有第一个标记会发生更改 尽管其余标记会因替换而突出显示 我在这里看到了一些关于如何根据具体情况启用此行为的帖子 但
  • 使用 AngularJS、ui.Router 和 yeoman 进行 Livereload Html5 Pushstate

    我想用我的 Angular js 应用程序修复 livereload 我正在使用 yoeman ui router 和 html5 推送状态 a必须做什么 指数对于搜索引擎 您必须将以下内容添加到你的index html The app在您
  • Android ImageView模糊动画

    我正在寻找添加模糊动画ImageView 但有设定的持续时间 例如 我希望图像随着时间的推移而变得模糊 我已经有了模糊图像的方法 但我需要的是让它在 2 秒内从模糊变为不模糊 有人可以帮我吗 编辑 这是我目前模糊图像的方法 public B
  • Metro 风格应用程序中的 XAML 图像质量(插值)

    给定以下 Image 对象 它位于 ListView 对象的 DataTemplate 中
  • BLE 多重连接

    是否可以通过低功耗蓝牙连接多个传感器标签 在TI提供的应用程序中 传感器标签是服务器 应用程序是客户端 那么 单个客户端可以连接多个服务器吗 是的 可以从一个应用程序连接到多个 BLE 设备 另一方面 目前 Android BLE 堆栈 B
  • RabbitMQ 上 celery 任务优先级的解决方法?

    我在 RabbitMQ 之上运行 Django 和 Celery 作为队列来处理一些数据处理任务 当用户首次注册时 我会启动 celery 任务 并定期更新他们的数据 但是 我当然想优先处理当前在线用户运行的任务 我注意到celery中的任
  • HTML5 验证输入仅接受字母

    我有一个输入的名字
  • Java中如何获取包含前N个unicode字符的子字符串

    Java 中的 String 数据类型让我们通过 codePointCount 知道字符串中有多少个 unicode 字符 以及如何通过 codePointAt 获取第 n 个 unicode 字符 我想知道是否有一个 API 可以获取 J
  • 如何修复“此证书无法由受信任的证书颁发机构验证”

    我在 IE9 中遇到安全证书问题 然后我转到我得到的具体地址 There is a problem with this website s security certificate 如何避免出现此窗口 我尝试输入 继续访问此网站 不推荐 证
  • 我可以生成带有 Multipart 参数的 Spring Feign 客户端吗?

    我收到错误 方法有太多主体参数 当尝试生成 Spring Feign 客户端时 RequestMapping value media method RequestMethod POST String uploadMedia RequestH
  • 对 7 个整数的数组进行排序的最快方法是什么?

    这是分析扑克 特别是德州扑克 赔率的程序的一部分 我有一个我很满意的程序 但它需要一些小的优化才能完美 我使用这种类型 当然还有其他类型 type T7Cards array 0 6 of integer 在决定如何对其进行排序时 有关此数
  • Ninject InRequestScope 回退到 InThreadScope

    在我的 MVC3 项目中 我将内核设置为Ninject the 实体框架上下文关于InRequestScope基础 这工作完美 但我有一个后台运行程序可以进行一些工作流程管理 它每 5 分钟启动一个新线程 我Ninject我对此线程的依赖关
  • 如何删除批处理文件中用户提供的输入的尾随和前导空格?

    我知道在预定义变量时如何执行此操作 但是 当要求用户输入某种输入时 如何修剪前导和尾随空格 这是我到目前为止所拥有的 echo off set p input echo The input is input before trim left
  • R中的空间最近邻分配

    我正在开展一项研究 试图根据特定个人的地址将颗粒物暴露情况分配给他们 我有两个带有经度和纬度坐标的数据集 一种 if 适合个人 另一种 if 适合下午暴露块 我想根据最接近的块为每个主题分配一个下午曝光块 library sp librar
  • SPARQL - 选择 dbpedia 资源最相关的类别

    我有一个 dbpedia 资源 我想获取所有相关的 dbpedia 类别 为此 我编写了这个 SPARQL 查询 SELECT p o WHERE
  • keyup 在 Android 上的 Chrome 上不起作用

    我正在使用引导程序提前输入 它依赖于这个 jQuery 代码来工作 el on keyup doSomething 在 Windows 上的 Chrome 上 它运行良好 在 Android 上的 Chrome 上则不然 keyup 事件永
  • 如何防止 Visual Studio 设计器在 DataGridView 中自动生成列?

    我在子类中生成所有列DataGridView以编程方式 然而 Visual Studio 2008 不断读取我的构造函数类 它填充DataTable具有空内容并将其绑定到DataGridView 并为中的列生成代码InitializeCom
  • JGit 克隆存储库

    我正在尝试使用 JGit 克隆 Git 存储库 但遇到 UnsupportedCredentialItem 问题 My code FileRepositoryBuilder builder new FileRepositoryBuilder
  • 是否可以将“require”和“import”与Webpack一起使用?

    我们必须更新一些依赖项才能切换到 Webpack 4 并且在尝试混合时在 webpack 中收到警告 在浏览器中收到错误import and require在同一个项目内 我们有一个very大型项目 300 个文件 其中一些文件使用var