无法解析自定义node_module中的 JSX 语法



我有一个父项目(使用 React 编写的 UI(,它从导入的 npm 包导入其 Redux 存储。

index.js父项目

import React from 'react';
import ReactDOM from 'react-dom';
import Root from './containers/Root';
import configureStore from 'custom-store';// Importing the custom package
ReactDOM.render(
  <Root store={configureStore()} />,
  document.getElementById('root')
)

custom-store包作为独立项目执行时。文件DevTools.js正确解析。

但是custom-store包只是在正在执行的 PARENT 项目的node_modules内导入的包时,我看到此错误:

./node_modules/custom-store/src/containers/DevTools.js
Module parse failed: /path/to/project/node_modules/custom-store/src/containers/DevTools.js Unexpected token (7:2)
You may need an appropriate loader to handle this file type.
| 
| export default createDevTools(
|   <DockMonitor toggleVisibilityKey="ctrl-h"
|                changePositionKey="ctrl-w">
|     <LogMonitor />

configureStore.js导入项目

import { createStore, applyMiddleware, compose } from 'redux'
import thunk from 'redux-thunk'
import { createLogger } from 'redux-logger'
import customApi from '../middleware/custom/api'
import rootReducer from '../reducers'
import DevTools from '../containers/DevTools' // I would like to use DevTools in the parent project too for debugging purpose
const configureStore = preloadedState => {
  const store = createStore(
    rootReducer,
    preloadedState,
    compose(
      applyMiddleware(thunk, customApi, createLogger()),
      DevTools.instrument()
    )
  )
  if (module.hot) {
    // Enable Webpack hot module replacement for reducers
    module.hot.accept('../reducers', () => {
      store.replaceReducer(rootReducer)
    })
  }
  return store
}
export default configureStore

DevTools.js导入的项目

import React from 'react'
import { createDevTools } from 'redux-devtools'
import LogMonitor from 'redux-devtools-log-monitor'
import DockMonitor from 'redux-devtools-dock-monitor'
export default createDevTools(
  <DockMonitor toggleVisibilityKey="ctrl-h" // Problem parsing this line
               changePositionKey="ctrl-w">
    <LogMonitor />
  </DockMonitor>
)

笔记:

自定义包包含redux-devtools使用的一些 JSX 代码,因此错误您可能需要适当的加载器来处理此文件类型。

可能的原因可能是某些预设缺失(例如 es2015react ( 阻止解析 JSX 文件的.babelrc

我想使用 PARENT 项目中的redux-devtools进行调试,而不仅仅是完全删除导入。

我的解决方案是手动将 JSX 转换为 JS 代码并完全避免自动翻译,这在 DevTools.js 中起作用:

const logMonitor = React.createElement(LogMonitor, null)
const dockMonitor = React.createElement(DockMonitor, { toggleVisibilityKey: "ctrl-h", changePositionKey: "ctrl-w" }, logMonitor)
export default createDevTools(dockMonitor)

相关内容

  • 没有找到相关文章

最新更新