webpack 开发服务器似乎不提供文件
webpack dev server does not seem to serve up files
我正在尝试设置一个新项目,但在使用 webpack-dev-server 时遇到了一些问题,看起来客户端编译成功,但我无法查看 index.html 或 main.js,它们似乎不可用。
我尝试了很多不同的 webpack 配置设置,但 none 似乎有效。
我有一个包含客户端和服务器目录的项目,我的文件夹结构如下:
> project
> dist
> src
> client
client.tsx
webpack.config.js
> server
package.json
在 package.json 我有一个开发客户端脚本:"dev-client": "cd ./src/client && webpack-dev-server -w",
我的 webpack.config.js 看起来像这样(我已经对其进行了相当多的更改以使其正常工作):
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const projectRoot = path.join(__dirname, "..", "..");
module.exports = {
devtool: "inline-source-map",
mode: "development",
entry: "./client",
output: {
path: path.join(projectRoot, "dist", "public"),
publicPath: "/public/",
},
resolve: {
extensions: [".js", ".ts", ".tsx"],
},
module: {
rules: [
{
test: /\.tsx?$/,
use: {
loader: "ts-loader",
},
},
{
test: /\.scss$/,
use: [
{
loader: "style-loader",
},
{
loader: "css-loader",
},
{
loader: "sass-loader",
},
],
},
{
test: /\.(jpe?g|gif|png|svg|woff|woff2|ttf|eot)$/,
use: {
loader: "url-loader",
options: {
limit: 10000,
},
},
},
],
},
plugins: [
new HtmlWebpackPlugin(),
],
devServer: {
contentBase: path.join(projectRoot, "dist"),
},
}
当我 运行 npm run dev-client
我收到成功消息 i 「wdm」: Compiled successfully.
但是当我导航到 http://localhost:8080/ 我看到的只是被编译到 dist 文件夹的服务器.
依赖信息:
"css-loader": "^0.28.11",
"file-loader": "^1.1.11",
"html-webpack-plugin": "^3.2.0",
"node-sass": "^4.9.0",
"sass-loader": "^7.0.1",
"style-loader": "^0.21.0",
"ts-loader": "^4.2.0",
"url-loader": "^1.0.1",
"webpack": "^4.6.0",
"webpack-cli": "^2.0.15",
"webpack-dev-server": "^3.1.3"
所以经过一系列测试后,我发现回滚到 webpack-dev-server 的 3.1.1 可以解决这个问题,这让我想到了这个问题:
https://github.com/webpack/webpack-dev-server/issues/1373
这表示问题是由项目路径中的空格引起的。我删除了空格,效果很好。
张贴在这里以防其他人遇到同样的问题。
我正在尝试设置一个新项目,但在使用 webpack-dev-server 时遇到了一些问题,看起来客户端编译成功,但我无法查看 index.html 或 main.js,它们似乎不可用。 我尝试了很多不同的 webpack 配置设置,但 none 似乎有效。
我有一个包含客户端和服务器目录的项目,我的文件夹结构如下:
> project
> dist
> src
> client
client.tsx
webpack.config.js
> server
package.json
在 package.json 我有一个开发客户端脚本:"dev-client": "cd ./src/client && webpack-dev-server -w",
我的 webpack.config.js 看起来像这样(我已经对其进行了相当多的更改以使其正常工作):
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const projectRoot = path.join(__dirname, "..", "..");
module.exports = {
devtool: "inline-source-map",
mode: "development",
entry: "./client",
output: {
path: path.join(projectRoot, "dist", "public"),
publicPath: "/public/",
},
resolve: {
extensions: [".js", ".ts", ".tsx"],
},
module: {
rules: [
{
test: /\.tsx?$/,
use: {
loader: "ts-loader",
},
},
{
test: /\.scss$/,
use: [
{
loader: "style-loader",
},
{
loader: "css-loader",
},
{
loader: "sass-loader",
},
],
},
{
test: /\.(jpe?g|gif|png|svg|woff|woff2|ttf|eot)$/,
use: {
loader: "url-loader",
options: {
limit: 10000,
},
},
},
],
},
plugins: [
new HtmlWebpackPlugin(),
],
devServer: {
contentBase: path.join(projectRoot, "dist"),
},
}
当我 运行 npm run dev-client
我收到成功消息 i 「wdm」: Compiled successfully.
但是当我导航到 http://localhost:8080/ 我看到的只是被编译到 dist 文件夹的服务器.
依赖信息:
"css-loader": "^0.28.11",
"file-loader": "^1.1.11",
"html-webpack-plugin": "^3.2.0",
"node-sass": "^4.9.0",
"sass-loader": "^7.0.1",
"style-loader": "^0.21.0",
"ts-loader": "^4.2.0",
"url-loader": "^1.0.1",
"webpack": "^4.6.0",
"webpack-cli": "^2.0.15",
"webpack-dev-server": "^3.1.3"
所以经过一系列测试后,我发现回滚到 webpack-dev-server 的 3.1.1 可以解决这个问题,这让我想到了这个问题: https://github.com/webpack/webpack-dev-server/issues/1373
这表示问题是由项目路径中的空格引起的。我删除了空格,效果很好。
张贴在这里以防其他人遇到同样的问题。