导入 .jsx 文件时找不到模块
Module not found when import .jsx file
我找不到解决办法。我正在使用 Reactstrap(CSS 框架)、React、Express 和 Webpack。
我在 index.jsx 上成功导入了 App.jsx 文件。然后,我尝试使用相同的方式在 App.jsx 上导入 NavbarTemplate.jsx 文件。但是,它显示如下错误:
ERROR in ./client/src/components/App.jsx
Module not found: Error: Can't resolve 'NavbarTemplate.jsx' in '/Users/oprent1/v2/oprent-react/client/src/components'
@ ./client/src/components/App.jsx 11:22-51
@ ./client/src/index.jsx
我的配置有什么问题?我在下面提供了几个与此相关的文件:
webpack.config.js
const path = require('path');
module.exports = {
entry: path.join(__dirname, '/client/src/index.jsx'),
output: {
path: path.join(__dirname, '/client/dist/js'),
filename: 'app.js',
},
module: {
loaders: [
{
test: /\.jsx?$/,
include: path.join(__dirname, '/client/src'),
// loader: 'babel',
loader: 'babel-loader',
query: {
presets: ["react", "es2015"],
plugins: ["transform-class-properties"]
}
},
{
test: /\.css$/,
loader: 'style-loader!css-loader'
}
],
},
watch: true
};
index.jsx
import React from 'react';
import ReactDOM from 'react-dom';
import Bootstrap from 'bootstrap/dist/css/bootstrap.css';
import App from './components/App.jsx'; //SUCCESS when imported
ReactDOM.render(
<App />,
document.getElementById('react-app')
);
App.jsx
import React from 'react';
import NavbarTemplate from 'NavbarTemplate.jsx'; //ERROR when imported
const App = (props) => {
return (
<div>
<NavbarTemplate />
</div>
);
};
export default App;
NavbarTemplate.jsx
import React, { PropTypes } from 'react';
import { Collapse, Navbar, NavbarToggler, NavbarBrand, Nav, NavItem, NavLink } from 'reactstrap';
class NavbarTemplate extends React.Component {
constructor(props) {
super(props);
this.toggleNavbar = this.toggleNavbar.bind(this);
this.state = {
collapsed: true
};
}
toggleNavbar() {
this.setState({
collapsed: !this.state.collapsed
});
}
render() {
return (
<div>
<Navbar color="faded" light>
<NavbarToggler onClick={this.toggleNavbar} />
<Collapse className="navbar-toggleable-md" isOpen={!this.state.collapsed}>
<NavbarBrand href="/">reactstrap</NavbarBrand>
<Nav navbar>
<NavItem>
<NavLink href="/components/">Components</NavLink>
</NavItem>
<NavItem>
<NavLink href="https://github.com/reactstrap/reactstrap">Github</NavLink>
</NavItem>
</Nav>
</Collapse>
</Navbar>
</div>
);
}
}
export default NavbarTemplate;
文件夹结构
要导入同一文件夹中的文件,您必须使用
./nameOfTheFile
而不是
nameOfTheFile
所以你的重要声明是
import NavbarTemplate from './NavbarTemplate.jsx';
如果您的 App.jsx 和 NavbarTemplate.jsx 在同一个根目录中,那么只需尝试
import NavbarTemplate from './NavbarTemplate';
它应该有效
所以基本上。当您尝试在 cmd also.so 中执行某些操作时代表父文件夹,执行 ./NavbarTemplate 将解决您的问题,因为您正在从同一文件夹导入模块
如果您使用的是 JSX 文件扩展名,则需要像下面的代码一样导入,
import NavbarTemplate from './NavbarTemplate.jsx';
如果您使用的是 JS 文件扩展名,则需要像下面的代码一样导入,
import NavbarTemplate from './NavbarTemplate';
根据 ,如果您不想在导入时添加 .jsx
,您可以将 resolve: { extensions: ['.js', '.jsx'] }
添加到 webpack.config
。
// ...
module: {
loaders: [
{
test: /\.jsx?$/,
include: path.join(__dirname, '/client/src'),
// loader: 'babel',
loader: 'babel-loader',
query: {
presets: ["react", "es2015"],
plugins: ["transform-class-properties"]
}
},
{
test: /\.css$/,
loader: 'style-loader!css-loader'
}
]
},
resolve: {
extensions: ['.js', '.jsx']
}
// ...
我找不到解决办法。我正在使用 Reactstrap(CSS 框架)、React、Express 和 Webpack。
我在 index.jsx 上成功导入了 App.jsx 文件。然后,我尝试使用相同的方式在 App.jsx 上导入 NavbarTemplate.jsx 文件。但是,它显示如下错误:
ERROR in ./client/src/components/App.jsx Module not found: Error: Can't resolve 'NavbarTemplate.jsx' in '/Users/oprent1/v2/oprent-react/client/src/components' @ ./client/src/components/App.jsx 11:22-51 @ ./client/src/index.jsx
我的配置有什么问题?我在下面提供了几个与此相关的文件:
webpack.config.js
const path = require('path');
module.exports = {
entry: path.join(__dirname, '/client/src/index.jsx'),
output: {
path: path.join(__dirname, '/client/dist/js'),
filename: 'app.js',
},
module: {
loaders: [
{
test: /\.jsx?$/,
include: path.join(__dirname, '/client/src'),
// loader: 'babel',
loader: 'babel-loader',
query: {
presets: ["react", "es2015"],
plugins: ["transform-class-properties"]
}
},
{
test: /\.css$/,
loader: 'style-loader!css-loader'
}
],
},
watch: true
};
index.jsx
import React from 'react';
import ReactDOM from 'react-dom';
import Bootstrap from 'bootstrap/dist/css/bootstrap.css';
import App from './components/App.jsx'; //SUCCESS when imported
ReactDOM.render(
<App />,
document.getElementById('react-app')
);
App.jsx
import React from 'react';
import NavbarTemplate from 'NavbarTemplate.jsx'; //ERROR when imported
const App = (props) => {
return (
<div>
<NavbarTemplate />
</div>
);
};
export default App;
NavbarTemplate.jsx
import React, { PropTypes } from 'react';
import { Collapse, Navbar, NavbarToggler, NavbarBrand, Nav, NavItem, NavLink } from 'reactstrap';
class NavbarTemplate extends React.Component {
constructor(props) {
super(props);
this.toggleNavbar = this.toggleNavbar.bind(this);
this.state = {
collapsed: true
};
}
toggleNavbar() {
this.setState({
collapsed: !this.state.collapsed
});
}
render() {
return (
<div>
<Navbar color="faded" light>
<NavbarToggler onClick={this.toggleNavbar} />
<Collapse className="navbar-toggleable-md" isOpen={!this.state.collapsed}>
<NavbarBrand href="/">reactstrap</NavbarBrand>
<Nav navbar>
<NavItem>
<NavLink href="/components/">Components</NavLink>
</NavItem>
<NavItem>
<NavLink href="https://github.com/reactstrap/reactstrap">Github</NavLink>
</NavItem>
</Nav>
</Collapse>
</Navbar>
</div>
);
}
}
export default NavbarTemplate;
文件夹结构
要导入同一文件夹中的文件,您必须使用
./nameOfTheFile
而不是
nameOfTheFile
所以你的重要声明是
import NavbarTemplate from './NavbarTemplate.jsx';
如果您的 App.jsx 和 NavbarTemplate.jsx 在同一个根目录中,那么只需尝试
import NavbarTemplate from './NavbarTemplate';
它应该有效
所以基本上。当您尝试在 cmd also.so 中执行某些操作时代表父文件夹,执行 ./NavbarTemplate 将解决您的问题,因为您正在从同一文件夹导入模块
如果您使用的是 JSX 文件扩展名,则需要像下面的代码一样导入,
import NavbarTemplate from './NavbarTemplate.jsx';
如果您使用的是 JS 文件扩展名,则需要像下面的代码一样导入,
import NavbarTemplate from './NavbarTemplate';
根据 .jsx
,您可以将 resolve: { extensions: ['.js', '.jsx'] }
添加到 webpack.config
。
// ...
module: {
loaders: [
{
test: /\.jsx?$/,
include: path.join(__dirname, '/client/src'),
// loader: 'babel',
loader: 'babel-loader',
query: {
presets: ["react", "es2015"],
plugins: ["transform-class-properties"]
}
},
{
test: /\.css$/,
loader: 'style-loader!css-loader'
}
]
},
resolve: {
extensions: ['.js', '.jsx']
}
// ...