[英]Webpack Error can't resolve file or directory (React)
Webpack works OK when all components are in the same file. 当所有组件都在同一个文件中时,Webpack正常工作。 When I try to separate each component to his own file I get an error:
当我尝试将每个组件分离到他自己的文件时,我收到一个错误:
'module not found: error: cannot resolve file or directory'.
'找不到模块:错误:无法解析文件或目录'。
I'm using windows 10. 我正在使用Windows 10。
folder structure: 文件夹结构:
reacttest (root)
node_modules
public
components
GreeterMassage.jsx
app.jsx
bundle.js
index.html
package.json
server.js
webpack.config.js
app.jsx code: app.jsx代码:
const React = require('react');
const ReactDOM = require('react-dom');
const GreeterMassage = require('./components/GreeterMassage');
const GreeterForm = React.createClass({
onFormSubmit: function(e) {
e.preventDefault();
const updates = {}
const name = this.refs.name.value;
const massage = this.refs.massage.value;
if(name.length > 0) {
this.refs.name.value = '';
updates.name = name;
}
if(massage.length > 0) {
this.refs.massage.value = '';
updates.massage = massage;
}
this.props.onNewData(updates);
},
render: function() {
return (
<form onSubmit={this.onFormSubmit}>
<div>
<input type="text" ref="name" placeholder="Name"/>
</div>
<div>
<textArea type="text" ref="massage" placeholder="Massage"/>
</div>
<div>
<button>Set</button>
</div>
</form>
);
}
});
const Greeter = React.createClass({
getDefaultProps: function() {
return {
name: 'React',
massage: 'Default massage'
};
},
getInitialState: function() {
return {
name: this.props.name,
massage: this.props.massage
};
},
handleNewData: function(updates) {
this.setState(updates);
},
render: function() {
const name = this.state.name;
const massage = this.state.massage;
return (
<div>
<GreeterMassage name={name} massage={massage}/>
<GreeterForm onNewData={this.handleNewData}/>
</div>
);
}
});
const firstname = 'My First Name';
ReactDOM.render(
<Greeter name={firstname}/>,
document.getElementById('app')
);
GreeterMassage.jsx code: GreeterMassage.jsx代码:
const React = require('react');
const GreeterMassage = React.createClass({
render: function() {
const name = this.props.name;
const massage = this.props.massage;
return (
<div>
<h1>Hello {name}</h1>
<p>{massage}</p>
</div>
);
}
});
module.exports = GreeterMassage;
webpack.config.js webpack.config.js
module.exports = {
entry: './public/app.jsx',
output: {
path: __dirname,
filename: './public/bundle.js'
},
resolve: {
extesions: ['', '.js', '.jsx']
},
module: {
loaders: [
{
loader: 'babel-loader',
query: {
presets: ['react', 'es2015']
},
test: /\.jsx?$/,
exclude: /(node_modules | bower_components)/
}
]
}
};
app.jsx
是在同一个目录中GreeterMassage.jsx
,进口是相对于文件做进口,所以它应该是:
const GreeterMassage = require('./GreeterMassage');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.