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

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

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    rollup打包后(产物是umd格式),组件的静态属性丢失
    85
    0
    比如有一个组件import React, { createElement } from 'react';import C from './C'function A(){ console.log(111) console.log(C) // return <div>111</div>}A.a=1111;export default A用rollup打包后会产生一个umd 格式的runtime.js(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('react')) : typeof define === 'function' && define.amd ? define(['react'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.rootcloud = global.rootcloud || {}, global.rootcloud.RootcloudBar = global.rootcloud.RootcloudBar || {}, global.rootcloud.RootcloudBar.runtime = factory(global.React)));})(this, (function (react) { 'use strict'; function A() { return /* @__PURE__ */ react.createElement("div", null, "111"); } A.a = 1111; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); const Index = (props) => { return /* @__PURE__ */ react.createElement(A, __spreadProps(__spreadValues({}, props), { reversal: false })); }; return Index;}));当我在一个组件里面引入了该runtime.js 后,发现组件上并没有a属性import ShowCompoment from './runtime'console.log(ShowCompoment.a) // undefined请问该怎么处理,才能访问到组件上的A属性呢?
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 细节中崩溃 普通会员 1楼

      在Rollup中,生成的UMD文件格式的组件类中,静态属性会被打包到类的静态属性数组中。如果你发现静态属性在生成的UMD文件中丢失,可能是因为在打包过程中没有将静态属性添加到类的静态属性数组中。

      解决这个问题的方法是在打包前检查和添加静态属性到类的静态属性数组中。你可以使用 Rollup的插件,如rollup-plugin-commonjs,它可以帮助你自动添加静态属性到类的静态属性数组中。

      例如,你可以使用以下代码来安装rollup-plugin-commonjs:

      bash npm install rollup-plugin-commonjs --save-dev

      然后,你可以在你的rollup配置文件中添加以下代码:

      ```javascript import { commonjs } from 'rollup-plugin-commonjs';

      export default { input: 'src/index.js', output: { file: 'dist/index.js', format: 'umd' }, plugins: [commonjs()] }; ```

      这样,Rollup就会自动将所有静态属性添加到类的静态属性数组中。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部