3

我目前的装载机是:

{
    test: path.join(__dirname, '../libs/mxClient/js/mxClient.js'),
    loaders: [
        'exports?mxClient,mxGraph,mxGraphModel'
    ]
}

我似乎必须导出 mxClient 中存在的每个对象,以便在我使用时能够在我的应用程序中使用它:

var mxClientTest = require('mxClient');

另一个问题是,当我尝试对我的模块使用 import 时,似乎没有加载任何内容,但是当我将它分配给一个变量并使用 require 时,我确实得到了我在加载程序中指定的导出,任何人都会知道为什么?

4

2 回答 2

3

我已经能够通过 webpack 导入它。您必须在模块 => 规则下的 webpack 配置中添加以下代码

module: {
   rules: [
       ...

       {
         test: require.resolve('mxgraph/javascript/mxClient'),
         use: 'exports-loader?' +
      'mxClient,mxLog,mxObjectIdentity,mxDictionary,mxResources,mxEffects,mxUtils,mxConstants,mxEvent,mxClipboard,mxUrlConverter,mxVmlCanvas2D,mxStencilRegistry,' +
      'mxMarker,mxHierarchicalEdgeStyle,mxCellPath,mxPerimeter,mxEdgeStyle,mxStyleRegistry,mxCodecRegistry,mxGenericChangeCodec,mxStylesheetCodec,mxDefaultToolbarCodec,' +
      'mxGraph,mxRubberband,mxHierarchicalLayout,mxFastOrganicLayout,mxGraphModel,mxPanningHandler,mxKeyHandler,mxParallelEdgeLayout,mxLayoutManager,mxCompactTreeLayout,' +
      'mxPrintPreview,mxToolbar,mxOutline,mxCellTracker,mxCellOverlay,mxImage,mxLoadResources,mxPopupMenu,mxCylinder,mxRectangle,mxCellRenderer,mxVertexHandler,mxPoint,' +
      'mxHandle,mxRhombus, mxActor,mxArrow,mxArrowConnector,mxCloud,mxConnector,mxConnector,mxEllipse,mxHexagon,mxImageShape,mxLabel,mxLine,mxPolyline,mxMarker,mxRectangleShape,' +
      'mxShape,mxStencil,mxStencilRegistry,mxSwimlane,mxText,mxTriangle,mxAutoSaveManager,mxDivResizer,mxForm,mxGuide,mxImageBundle,mxImageExport,mxLog,mxMorphing,mxMouseEvent,' +
      'mxPanningManager,mxSvgCanvas2D,mxUndoableEdit,mxUndoManager,mxUrlConverter,mxWindow,mxXmlCanvas2D,mxXmlRequest,mxCellEditor,mxCellState,mxCellStatePreview,mxConnectionConstraint,' +
      'mxGraphSelectionModel,mxGraphView,mxMultiplicity,mxSwimlaneManager,mxTemporaryCellStates,mxGeometry,mxStackLayout,mxRadialTreeLayout,mxPartitionLayout,mxGraphLayout,' +
      'mxEdgeLabelLayout,mxCompositeLayout,mxCircleLayout,mxSwimlaneOrdering,mxMinimumCycleRemover,mxMedianHybridCrossingReduction,mxHierarchicalLayoutStage,mxCoordinateAssignment,' +
      'mxSwimlaneLayout,mxObjectCodec,mxGenericChangeCodec,mxTooltipHandler,mxSelectionCellsHandler,mxPopupMenuHandler,mxGraphHandler,mxElbowEdgeHandler,mxEdgeHandler,' +
      'mxConstraintHandler,mxConnectionHandler,mxCellMarker,mxCellHighlight,mxDefaultPopupMenu,mxDefaultKeyHandler,mxCodec,mxGraphHierarchyModel,mxGraphAbstractHierarchyCell,' +
      'mxGraphHierarchyEdge,mxGraphHierarchyNode,mxSwimlaneModel,mxEdgeSegmentHandler'
       }
        ]
}

然后你像这样在你的代码中导入变量:

import {
   mxClient,
   mxUtils,
   mxConstants,
   ...
       } from 'mxgraph/javascript/mxClient'

希望这可以帮助 :)

于 2018-10-31T16:48:34.820 回答
0

当我使用以下设置时,我已经能够使用 import 而不是 require 了。

我像这样使用导出加载器:

{ test: /mxClient\.js$/, loader: 'exports-loader?mxClient,mxGraph, mxGraphModel' }

然后当我导入时:

import { mxGraph } from 'mxgraph/javascript/mxClient';

或者:

import { mxGraph, mxClient, mxGraphModel } from 'mxgraph/javascript/mxClient';

于 2018-04-12T13:33:03.723 回答