我有一个用typescript @ 2编写的节点项目。
我的tsconfig将sourceMap
设置为true
,并生成*.map.js
个文件。当我通过*.js
或node
执行已翻译的nodemon
JavaScript文件时,我只会看到与js
文件相关的错误消息,而不会看到映射的打字稿文件;我认为它完全被忽略了。
sourceMap
支持仅用于浏览器支持吗?或者我可以将它与node或nodemon一起使用吗?如果是后者,我将如何启用它?
我希望在js文件中检测到相对于打字稿文件的错误。
答案 0 :(得分:18)
我只是在我的快递应用程序中使用它。
安装所需的库:
npm install --save-dev source-map-support
在您的切入点(例如app.ts
):
require('source-map-support').install();
在您的app.ts
中,您可能还需要更好地记录承诺中的错误:
process.on('unhandledRejection', console.log);
在tsconfig
下compilerOptions
下:
"inlineSourceMap": true
答案 1 :(得分:8)
我发现这个npm模块似乎可以解决这个问题:
https://github.com/evanw/node-source-map-support
在您的节点项目的根目录下运行npm install source-map-support --save
,并将import 'source-map-support/register'
添加到您的main.ts或index.ts文件中。
就是这样。
答案 2 :(得分:5)
源节点支持与节点
完美配合您需要做的就是添加
"source-map-support": "0.4.11",
运行,在dependencies
中{p>到dev-dependencies
或package.json
npm install --save source-map-support
在您的入口点ts文件中,只需在顶部添加
即可require('source-map-support').install()
(注意:这是调用nodeJS require
- 不需要源映射支持定义文件)
答案 3 :(得分:4)
安装源地图支持:
Uncaught TypeError: Cannot read property 'map' of undefined
at Feed.render (bundle.js:11417)
at finishClassComponent (bundle.js:7881)
at updateClassComponent (bundle.js:7878)
at beginWork (bundle.js:7974)
at performUnitOfWork (bundle.js:8294)
at workLoop (bundle.js:8318)
at HTMLUnknownElement.callCallback (bundle.js:6296)
at Object.invokeGuardedCallbackDev (bundle.js:6312)
at invokeGuardedCallback (bundle.js:6251)
at performWork (bundle.js:8354)
添加到您的{
"next": "",
"posts": [
{
"postid": 3,
"url": "/api/v1/p/3/"
},
{
"postid": 2,
"url": "/api/v1/p/2/"
},
{
"postid": 1,
"url": "/api/v1/p/1/"
}
],
"url": "/api/v1/p/"
}
:
在您的tsconfig.json中,
constructor(props) {
// Initialize mutable state
super(props);
this.state = { posts: []};
}
componentDidMount() {
// Call REST API to get number of likes
fetch(this.props.url, { credentials: 'same-origin' })
.then((response) => {
if (!response.ok) throw Error(response.statusText);
return response.json();
})
.then((data) => {
this.setState({
posts: data.posts,
});
})
.catch(error => console.log(error));
}
render() {
const nums = [1,2,3,4,5,6]
var newData = Array.from(this.state.posts)
return (
<ul>
{this.state.newData.map((post)=> (
<li>post</li>
))}
</ul>
);
}
}
运行JavaScript文件时,添加require参数:
npm install source-map-support
或者,您也可以添加进入呼叫:
tsconfig.json
但是我发现这很繁琐,是具有多个入口点的项目。
答案 4 :(得分:0)
此处的答案对于v12.12.0之前的Node版本是正确的,该版本添加了(实验性)--enable-source-maps
标志。启用该功能后,源映射将被应用到堆栈跟踪中,而无需附加依赖项。如this article所示,它具有同时生成的.js文件位置和源文件位置都包括在内的稍微不同且可能有益的行为。例如:
Error: not found
at Object.<anonymous> (/Users/bencoe/oss/source-map-testing/test.js:29:7)
-> /Users/bencoe/oss/source-map-testing/test.ts:13:7