我正在安装一个react启动应用并添加了Webpack,但它说Can't resolve './src/index.js'
。
Webpack.config.js 目录
var debug = process.env.NODE_ENV !== "production";
var webpack = require('webpack');
var path = require('path');
module.exports = {
context: path.join(__dirname, "public"),
devtool: debug ? "inline-sourcemap" : false,
entry: "./src/index.js",
module: {
loaders: [
{
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader',
query: {
presets: ['react', 'es2016', 'stage-0'],
plugins: ['react-html-attrs', 'transform-decorators-legacy', 'transform-class-properties'],
}
}
]
},
output: {
path: __dirname + "/public/",
filename: "build.js"
},
plugins: debug ? [] : [
new webpack.optimize.DedupePlugin(),
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false }),
],
};
答案 0 :(得分:12)
您的基本网址为path.join(__dirname, "public")
,您的参赛作品为./src/index.js
。 Webpack尝试在./src/index.js
dir中找到public
;显然它不存在。您应该将entry
修改为../src/index.js
。
答案 1 :(得分:1)
我发现解决此问题的另一种方法是使用path.resolve()
。
const path = require('path');
module.exports = {
mode: "production",
entry: path.resolve(__dirname, 'src') + 'path/to/your/file.js',
output: {
/*Webpack producing results*/
path: path.resolve(__dirname, "../src/dist"),
filename: "app-bundle.js"
}
}
这将确保webpack在src
目录中寻找入口点。
顺便说一句,它是默认入口点。您也可以将此入口点更改为合适的位置。只需将src
目录替换为您要使用的其他目录即可。
答案 2 :(得分:1)
我遇到了同样的问题,发现这是由过去使用create-react-app
在全局安装npm install -g create-react-app
引起的。
由于现在不应该在全局范围内安装create-react-app,因此我需要先使用npm uninstall -g create-react-app
卸载它,然后再使用npx create-react-app *my-app-name*
将其安装在我的项目目录中。
答案 3 :(得分:0)
输入路径相对于上下文。当您希望public/src/
只查找/src
中的路径时,它会在webpack.config.js
中查找文件。看看<div class="form-group col-md-2">
{{ Form::label('from', null, ['class' => 'control-label']) }}
<select name="from" class="selectpicker form-control mySel" multiple data-max-options="1" data-live-search="true" required="true">
<option value="1">Airport</option>
</select>
</div>
<div class="form-group col-md-1">
<input type="button" value="swap" id="swap">
</div>
<div class="form-group col-md-2">
{{ Form::label('to', null, ['class' => 'control-label']) }}
<select name="to" class="selectpicker form-control mySel" multiple data-max-options="1" data-live-search="true" required="true">
@foreach($services as $key => $value)
<option value="{{$value->id}}">{{ $value->location }}</option>
@endforeach
</select>
</div>
的其余内容,您似乎根本不需要上下文行。
答案 4 :(得分:0)
我的webpack.config.js被命名为Webpack.config.js,新的cli正在寻找区分大小写的东西。
答案 5 :(得分:0)
Webpack默认不查找.js文件。您可以配置resolve.extensions查找.ts。别忘了也添加默认值,否则大多数模块都会崩溃,因为它们依赖于自动使用.js扩展名的事实。
resolve: {
extensions: ['.js', '.json']
}
答案 6 :(得分:0)
我的解决方案是将 App.js 文件放在 src 文件夹内的 components 文件夹中,并将 inde.js 放在 src 文件夹内