簡體   English   中英

React獨立捆綁包,內部沒有React庫

[英]React standalone bundle without react library inside

我已經創建了獨立的包,我將其包含在React App中。 App本身對加載的Extension Bundle(下一個XB)一無所知,但XB確實了解App及其在內部使用的庫。 如何使與XB一起編譯的App共享庫軟件包? 我的意思是,如果該應用程序使用React和React-dom庫進行編譯,以使XB排除使用此類庫進行編譯,而是從該應用程序中使用它們?

我放入webpack配置中以將React排除在編譯之外:

var config = {
//....
    output: {
        library: 'videoEditor',
        libraryTarget: 'umd',
        path: BUILD_PATH+"./../bundles/",
       filename: '[name].bundle.js'
   },
// ...
}

// .... later just extending config if compiling as standalone
config.externals = Object.assign(config.externals,{'react':'React'});

是的,這使我在退出時不帶React庫的Bundle(因此其大小從190KB減少到10KB)。 但是,如果我嘗試加載它,則會出現錯誤:

index.js?7afc:1 Uncaught ReferenceError: require is not defined
    at eval (index.js?7afc:1)
    at Object.<anonymous> (video-editor.bundle.js:80)
    at __webpack_require__ (video-editor.bundle.js:30)
    at video-editor.bundle.js:73
    at video-editor.bundle.js:76
    at webpackUniversalModuleDefinition (video-editor.bundle.js:9)
    at video-editor.bundle.js:10

沒有外部,一切正常。

index.js?7afc:1是

import React from 'react';
import AppLayout from 'layouts/app';

import React from 'react';里面import React from 'react'; 作為module.exports = require('react');

我不明白如何使要求工作。 似乎對於全球空間是不可見的。

更新:我試圖更改任何可用選項上的libraryTarget:'umd','commonjs','this'。 結果是一樣的。

我從webpack知道commonChunkPlugin ,但是我有幾個來自不同來源的項目,它們是由不同的人編譯的。

從React v0.14.x開始,您還需要與React一起在外部中添加ReactDOM

externals: {
    // Use external version of React
    "react": "React",
    "react-dom": "ReactDOM"
},

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM