我对webpack很新,并且在配置它以生成必要的源映射时遇到一些麻烦。在devtools它说
检测到源地图
但它显示的是捆绑而不是原始代码:
这是我的webpack.config.js:
module.exports = {
entry: [
'webpack-dev-server/client?http://localhost:8080/',
'webpack/hot/dev-server',
"./src/index.js"
],
output: {
filename: 'bundle.js',
path: '/',
},
debug: true,
devtool: 'source-map',
resolve: {
extensions: ['', '.jsx', '.scss', '.js', '.json']
},
module: {
loaders: [
{
test: /(\.js|\.jsx)$/,
exclude: /node_modules/,
loaders: ['react-hot','babel']
},
{
test: /\.scss$/,
exclude: /node_modules/,
loaders: ["style", "css?sourceMap", "sass?sourceMap"]
}
]
},
devServer: { hot: true },
plugins: [ new webpack.HotModuleReplacementPlugin() ],
inline: true,
progress: true,
colors: true
};
这是我的package.json:
{
"name": "react-template",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"dev:test": "./node_modules/.bin/webpack --config webpack.test.config.js",
"test:bundle": "./node_modules/.bin/tape test/bundle.js",
"dev:serve": "./node_modules/.bin/webpack-dev-server --config webpack.development.config.js"
},
"devDependencies": {
"babel-loader": "^6.2.1",
"babel-preset-es2015": "^6.3.13",
"babel-preset-react": "^6.3.13",
"babel-preset-stage-0": "^6.3.13",
"css-loader": "^0.23.1",
"node-sass": "^3.8.0",
"on-build-webpack": "^0.1.0",
"react": "^0.14.6",
"react-dom": "^0.14.6",
"react-hot-loader": "^1.3.0",
"sass-loader": "^3.2.1",
"style-loader": "^0.13.0",
"tape": "^4.4.0",
"webpack": "^1.12.12",
"webpack-dev-server": "^1.14.1"
}
}
我尝试了devtool
选项的多种变体,并阅读了this,this和this,但没有运气。
任何帮助都会很棒!
答案 0 :(得分:20)
答案 1 :(得分:7)
请在webpack.config.js文件中添加以下内容。
devtool:“#inline-source-map”,
您可以在webpack` https://webpack.github.io/docs/configuration.html
的网站上找到有关它的明确信息另请参阅webpack网站上的sourcemap部分的附加截图。
答案 2 :(得分:0)
请确保您的--mode development
构建脚本中包含npm
,
{
"name": "test",
"version": "1.0.1",
"description": "",
"scripts": {
"build": "webpack",
"start": "webpack-dev-server --mode development --open"
"test": "echo \"Error: no test specified\" && exit 1",
},
"author": "",
"license": "",
"devDependencies": {
"babel-core": "^6.26.3",
"babel-loader": "^7.1.5",
"babel-preset-env": "^1.7.0",
"webpack": "^4.19.1",
"webpack-cli": "^3.1.0",
"webpack-dev-server": "^3.1.8"
},
"dependencies": {}
}
webpack.config.js
const path = require('path');
var webpack = require('webpack');
module.exports = {
entry: './src/web.js',
devtool: 'inline-source-map',
output: {
filename: 'main.js',
path: path.resolve(__dirname, 'dist')
},
mode: 'development',
module: {
rules: [{
test: /\.js$/,
exclude: /(node_modules)/,
use: {
loader: "babel-loader",
options: {
presets: ["babel-preset-env"]
}
}
}]
},
devServer: {
inline: true,
contentBase: path.join(__dirname, 'dist'),
compress: true,
port: 9000,
watchOptions: {
index: 'index.html',
open: true,
poll: true,
watchContentBase: true
}
},
watch: true,
watchOptions: {
aggregateTimeout: 500,
ignored: /node_modules/,
poll: 3000
}
}
答案 3 :(得分:0)
我遇到的问题是我的nginx
配置中。我的nginx配置为源映射文件抛出404,因为它无法识别要在哪里寻找的.map
文件。因此,除了.map
之外还添加了.js|.css
,它是固定的。
location ~* \.(?:css|js|map)$ {
expires 1y;
access_log off;
add_header Cache-Control "public";
}
答案 4 :(得分:0)
对我来说,问题是我的 html 中有一个特殊字符“ß”:
<textarea
id="start_location"
defaultValue="Gerwigstraße 22, 76131 Karlsruhe"
/>
将默认值更改为 "Gerwigstraße 22, 76131 Karlsruhe"
,源映射再次工作。