[英]React-Redux: Attempted import error: './components/Score' does not contain a default export (imported as 'Score')
[英]Attempted import error: './components' does not contain a default export (imported as 'App')
我有以下 ReactJS 項目結構,但出現以下錯誤:
./src/index.js
嘗試導入錯誤:“./components”不包含默認導出(導入為“App”)。
我的目標是像這樣導入組件: import { App, Navbar } from 'components';
(注意“組件”)而不像./components/App
、 ./components/App/index
等等。 為此,我需要在組件目錄中添加 index.js。 我嘗試通過以下代碼執行此操作,但收到上述錯誤。
什么原因? 我該如何解決?
有類似的線程,但我已經通過export default App;
在./components/App/index.jsx。 也許原因是 .jsx 擴展名?
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './components';
import * as serviceWorker from './serviceWorker';
ReactDOM.render(<App />, document.getElementById('root'));
serviceWorker.unregister();
export App from './App';
import React, { Fragment } from 'react';
import './style.css';
import { BrowserRouter as Router, Switch, Route, Redirect } from 'react-router-dom';
import NotAuthorizedRoute from '../../common/NotAuthorizedRoute';
import { Navbar, Home, User, Login } from 'components';
const App = () => {
return (
<Fragment>
<Router>
<Navbar />
<Switch>
<Route exact path="/" component={Home} />
<Route path="/users" component={User} />
<NotAuthorizedRoute path="/sign-in" component={Login} />
<Redirect from="*" to="/" />
</Switch>
</Router>
</Fragment>
);
};
export default App;
我嘗試執行以下操作,就像人們在此線程中所說的那樣: Attempted import error: 'App' is not exported from './App' 。
export { App } from './App'; // note the brackets
但后來我得到了:
./src/components/index.js
Attempted import error: 'App' is not exported from './App'.
看來您對 ES6 導出/ 導入語法有些困惑。 MDN 文檔非常詳細,我建議您查看一下。
最重要的是記住默認和命名導出/導入之間的區別。 (提示:當您在導出/導入語句中看到括號時,您正在處理命名語句)
在您的具體情況下,您必須執行以下操作:
const ComponentA = () => {
return (
<MyComponent/>
);
};
export {ComponentA};
const ComponentB = () => {
return (
<MyComponent/>
);
};
export {ComponentB};
import {componentA} from './component-a.jsx';
import {componentB} from './component-b.jsx';
export {componentA, componentB};
import {componentA, componentB} from './components';
import {componentA} from './components';
這是為邏輯模塊分類創建虛擬導出/導入命名空間的典型模式。
請注意,我沒有使用默認導出。 對此有幾種意見,但我建議不要使用它們以避免像您所遇到的錯誤。
另請注意,您始終必須指定components
目錄的完整相對路徑。 從'components'
導入內容的唯一方法是在node_modules
目錄中安裝components
package。
確保您沒有在 {componentA} 中使用導出值 componentA
remove `{}` and check
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.