我有一个父项目(使用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包只是正在执行的父项目的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 configureStoreDevTools.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代码,因此您可能需要一个适当的加载程序来处理此文件类型.。
可能的原因可能是由于缺少一些预设(例如es2015、react)在.babelrc中,从而阻止了对JSX文件的解析。
我希望在父项目中使用redux-devtools进行调试,而不仅仅是完全删除导入。
发布于 2018-01-05 10:43:56
我的解决方案是手动将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)https://stackoverflow.com/questions/48100038
复制相似问题