Tôi chạy trên một vấn đề tương tự, nhưng chúng tôi đang sử dụng trình duyệt thay vì webpack. Tôi đã có cơ hội nói chuyện với một nhà phát triển trong nhóm phát triển VS2017 tại BUILD tuần này và anh ta chỉ ra rằng việc kiểm tra đơn giản là đảm bảo Edge có thể xem các tệp gốc trong khung nhìn Debugger. Nếu vậy, các sourcemaps được sản xuất đúng cách.
Trong trường hợp của tôi, tôi có một số vấn đề. Dưới đây là bộ công cụ Tôi đang sử dụng:
browserify
gulp-sourcemaps
uglify
Nhiệm vụ của tôi gulp
trông như sau:
gulp.task('build:debug:js', function() {
return browserify('./wwwroot/js/site.js', { debug: true })
.transform("babelify", { presets: ["es2015"] })
.transform(stringify, {
appliesTo: { includeExtensions: ['.html'] }
})
.bundle()
.pipe(source('site.min.js'))
.pipe(buffer())
.pipe(sourcemaps.init({ loadMaps: true }))
.pipe(uglify())
.pipe(sourcemaps.write('.', {
sourceMappingURL: function(file) {
return file.relative + '.map';
}
}))
.pipe(gulp.dest('./wwwroot/js'))
.pipe(connect.reload());
});
tôi tình cờ được sử dụng một phiên bản cũ của gulp-sourcemaps
(1.7 .1). Điều này cuối cùng đã làm được sản xuất các bình luận sourcemaps vào cuối của tập tin JavaScript minified của tôi hơn là trên một dòng mới. Ngoài ra, văn bản theo nghĩa đen null
xuất hiện ngay sau .map
khiến trình duyệt không nhìn thấy tệp sourcemap. Sau khi tôi nâng cấp lên gulp-sourcemaps
(2.6.0) mới nhất, nó đảm bảo nhận xét về bản đồ nguồn trên dòng cuối cùng của tệp và không có null
ở cuối.
Vấn đề thứ hai là làm cho Visual Studio biết nơi nguồn được đặt đúng vị trí. Các đường dẫn cho cái nhìn dự án của tôi như sau:
- App Thư mục
- wwwroot
- js
- site.min.js
- site.min.js.map
- release_dashboard.js
Khi lưu trữ, JavaScript được truy cập bằng cách vào /js/site.min.js
, không/wwwroot/js/site.min.js
. Tuy nhiên, vào thời điểm này, các sourcemaps trông giống như sau:
{
"version":3,
"sources":[
"node_modules/browser-pack/_prelude.js",
"wwwroot/js/release-dashboard.html",
"wwwroot/js/release-dashboard.js",
"wwwroot/js/site.js"
],
"names":[],
"mappings":"SNIP",
"file":"site.min.js"
}
Vì vậy, tôi đã phải sử dụng nhiệm vụ ngụm sau đây để có được nó để loại bỏ wwwroot
và điểm sourceroot lập một thư mục:
gulp.task('build:debug:js', function() {
return browserify('./wwwroot/js/site.js', { debug: true })
.transform("babelify", { presets: ["es2015"] })
.transform(stringify, {
appliesTo: { includeExtensions: ['.html'] }
})
.bundle()
.pipe(source('site.min.js'))
.pipe(buffer())
.pipe(sourcemaps.init({ loadMaps: true }))
.pipe(sourcemaps.mapSources(function (sourcePath, file) {
return sourcePath.replace('wwwroot/', '');
}))
.pipe(sourcemaps.write('.', { includeContent: false, sourceRoot: '../' }))
.pipe(gulp.dest('./wwwroot/js'))
.pipe(connect.reload());
});
này tạo ra một sourcemap trông giống như sau:
{
"version":3,
"sources":[
"node_modules/browser-pack/_prelude.js",
"wwwroot/js/release-dashboard.html",
"wwwroot/js/release-dashboard.js",
"wwwroot/js/site.js"
],
"names":[],
"mappings":"SNIP",
"file":"site.min.js",
"sourceRoot":"../"
}
với điều này, Chrome nhặt nó lên mà không có một vấn đề và cũng vậy Visual Studio!
Tôi muốn thêm rằng dường như có tệp đầu tiên trong danh sách nguồn và luôn ánh xạ tới tệp này. (trong trường hợp của tôi đó là tệp bootstrap) – Sandman
Bạn đã sử dụng mẫu dự án nào? –
Tôi đã sử dụng studio hình ảnh 2017 - Trang web mới, Trang web ASP.NET trống. – Sandman