一切都在当地完美无缺。我在webpack配置中启用了源映射,并创建了.map文件。 问题是当我将应用程序推送到Heroku时。如果我检查元素,我会看到源图没有启用。我最小化了我的代码,所以没有任何东西应该是没有源映射的地方 如何使用源映射部署到Heroku?
修改
webpack config
devtool: 'source-map',
module: {
rules: [
{
test: /\.(js|jsx)$/,
loader: 'babel-loader',
exclude: /node_modules|dist|build/,
options: {
babelrc: true,
},
},
{
test: /\.local\.(css|scss)$/,
use: ExtractLocal.extract({
fallback: 'style-loader?sourceMap',
use: [
{
loader: 'css-loader',
options: {
sourceMap: true,
minimize: true,
modules: true,
importLoaders: 1,
localIdentName: '[local]___[name]__[hash:base64:5]',
},
},
{
loader: 'postcss-loader',
options: {
sourceMap: true,
},
},
{
loader: 'sass-loader',
options: {
sourceMap: true,
},
},
{
loader: 'sass-resources-loader',
options: {
resources: [ path.resolve(__dirname, './src/client/styling/styles/variables.scss'), ],
},
},
],
}),
},
],
},
plugins: [
// new BundleAnalyzerPlugin(),
new webpack.optimize.UglifyJsPlugin({
sourceMap: true,
}),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
}),
]
的package.json
"build-client": "cross-env NODE_ENV=production webpack --config webpack.config.prod.js",
"start": "cross-env NODE_ENV=production node ./src/build/bundle.js",
如果我在heroku上刷新我的应用并运行heroku日志,我会收到有关源地图的以下错误。 H12请求超时。所以Sourcemaps就在那里但Heroku没有提取。
解 好的,我发现了问题。它是 Nginx 而不是Heroku。我在我的Heroku应用程序和服务器之间使用它。配置设置如下。
location ~* \.(js|css|gif|png|jpg|ico|svg|eot|ttf|otf|woff|woff2|json|xml)$ {
root "/app/src/dist/";
add_header Pragma public;
add_header Cache-Control public;
expires 1y;
gzip_static on;
gzip off;
log_not_found off;
access_log off;
}
正如您所看到的那样,没有地图扩展程序,因此无法获取它。在我添加之后,一切都开始正常工作了。