首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能解析自定义node_module中的JSX语法

不能解析自定义node_module中的JSX语法
EN

Stack Overflow用户
提问于 2018-01-04 16:56:18
回答 1查看 42关注 0票数 0

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

index.js 父项目

代码语言:javascript
复制
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包只是正在执行的父项目的node_modules中导入的包时,我看到了这个错误:

代码语言:javascript
复制
./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 导入项目

代码语言:javascript
复制
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 导入项目

代码语言:javascript
复制
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)在.babelrc中,从而阻止了对JSX文件的解析。

我希望在父项目中使用redux-devtools进行调试,而不仅仅是完全删除导入。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-05 10:43:56

我的解决方案是手动将JSX转换为JS代码,并避免完全自动转换,这在DevTools.js中是有效的。

代码语言:javascript
复制
const logMonitor = React.createElement(LogMonitor, null)
const dockMonitor = React.createElement(DockMonitor, { toggleVisibilityKey: "ctrl-h", changePositionKey: "ctrl-w" }, logMonitor)
export default createDevTools(dockMonitor)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48100038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档