在node / nodemon中是否有源映射支持typescript?

时间:2017-02-07 10:56:06

标签: javascript node.js typescript nodemon

我有一个用typescript @ 2编写的节点项目。

我的tsconfig将sourceMap设置为true,并生成*.map.js个文件。当我通过*.jsnode执行已翻译的nodemon JavaScript文件时,我只会看到与js文件相关的错误消息,而不会看到映射的打字稿文件;我认为它完全被忽略了。

sourceMap支持仅用于浏览器支持吗?或者我可以将它与node或nodemon一起使用吗?如果是后者,我将如何启用它?

我希望在js文件中检测到相对于打字稿文件的错误。

5 个答案:

答案 0 :(得分:18)

我只是在我的快递应用程序中使用它。

安装所需的库:

npm install --save-dev source-map-support

在您的切入点(例如app.ts):

require('source-map-support').install();

在您的app.ts中,您可能还需要更好地记录承诺中的错误:

process.on('unhandledRejection', console.log);

tsconfigcompilerOptions下:

"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-dependenciespackage.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