У меня проблемы с получением исходных карт для работы с Webpack и TypeScript, когда мои исходные коды / пакеты находятся в нестандартных местах.Если они находятся в стандартных папках ./src
и ./dist
, все работает нормально.Если я перенесу свои исходные файлы в каталоги с ссылками на ./Scripts/src
и ./Scripts/dist
соответственно и получу следующую ошибку:
SourceMap http://localhost:56154/Scripts/dist/bundle.js.map read failed: One or more errors occurred..
Единственное, что я изменил между работой и неработанием, этоScripts
каталог.
В частности, вот соответствующие файлы до и после изменений:
До (Работать)
webpack.config.js
'use strict';
const path = require('path');
module.exports = {
mode: 'development',
context: path.resolve(__dirname, 'src'),
resolve: {
extensions: ['.js', '.jsx', '.ts', '.tsx']
},
entry: "./index.tsx",
output: {
publicPath: '/dist/',
path: path.resolve(__dirname, './dist'),
filename: 'bundle.js'
},
// Enable sourcemaps for debugging webpack's output.
devtool: "source-map",
module: {
rules: [
// All files with a '.ts' or '.tsx' extension will be handled by 'awesome-typescript-loader'.
{ test: /\.tsx?$/, loader: "awesome-typescript-loader" },
// All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'.
{ enforce: "pre", test: /\.js$/, loader: "source-map-loader" }
]
},
externals: {
"react": "React",
"react-dom": "ReactDOM"
}
};
tsconfig.json
{
"compilerOptions": {
"outDir": "./dist/",
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es5",
"lib": ["es5", "es6", "dom"],
"jsx": "react"
},
"include": [
"./src/**/*"
]
}
Default.aspx
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...
</head>
<body>
...
<div id="example"></div>
<!-- Dependencies -->
<script type="text/javascript" src="./node_modules/react/umd/react.development.js"></script>
<script type="text/javascript" src="./node_modules/react-dom/umd/react-dom.development.js"></script>
<!-- Main -->
<script type="text/javascript" src="./dist/bundle.js"></script>
</body>
</html>
После
webpack.config.js
'use strict';
const path = require('path');
module.exports = {
mode: 'development',
context: path.resolve(__dirname, 'Scripts/src'),
resolve: {
extensions: ['.js', '.jsx', '.ts', '.tsx']
},
entry: "./index.tsx",
output: {
publicPath: '/Scripts/dist/',
path: path.resolve(__dirname, './Scripts/dist'),
filename: 'bundle.js'
},
// Enable sourcemaps for debugging webpack's output.
devtool: "source-map",
module: {
rules: [
// All files with a '.ts' or '.tsx' extension will be handled by 'awesome-typescript-loader'.
{ test: /\.tsx?$/, loader: "awesome-typescript-loader" },
// All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'.
{ enforce: "pre", test: /\.js$/, loader: "source-map-loader" }
]
},
externals: {
"react": "React",
"react-dom": "ReactDOM"
}
};
tsconfig.json
{
"compilerOptions": {
"outDir": "./Scripts/dist/",
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es5",
"lib": ["es5", "es6", "dom"],
"jsx": "react"
},
"include": [
"./Scripts/src/**/*"
]
}
Default.aspx
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...
</head>
<body>
...
<div id="example"></div>
<!-- Dependencies -->
<script type="text/javascript" src="./node_modules/react/umd/react.development.js"></script>
<script type="text/javascript" src="./node_modules/react-dom/umd/react-dom.development.js"></script>
<!-- Main -->
<script type="text/javascript" src="./Scripts/dist/bundle.js"></script>
</body>
</html>
TL; DR
Если я изменю путь только в следующих местах, моя исходная картаперерывы:
webpack.config.js
context: path.resolve(__dirname, '[Scripts/]src'),
output: {
publicPath: '/[Scripts/]dist/',
path: path.resolve(__dirname, './[Scripts/]dist')
}
tsconfig.json
"compilerOptions": {
"outDir": "./[Scripts/]dist/"
},
"include": [
"./[Scripts/]src/**/*"
]
По умолчанию.aspx
<script type="text/javascript" src="./[Scripts/]dist/bundle.js"></script>
Что еще мне нужно изменить?