React(JS) 如何获取当前模块导入的文件的文件名?

Eli*_*ski 6 javascript reactjs

我正在编写一个反应库(react-xarrows.tsx),当用户向我的组件提供错误的属性时,会抛出错误(我写的),但它显示了我在“react-arrows.tsx”中编写的行。

出错时用户将看到:

/src/Xarrow.tsx:184:12
    if (!("current" in props.start))
      throw Error(
        `'start' property is not of type reference.
        maybe you set 'start' to other object and not to React reference?.\n`
      );
Run Code Online (Sandbox Code Playgroud)

我想准确地向用户指出他出错的地方 - 我可以通过向 Error 提供“文件名”来做到这一点 - Error([message[, fileName[, lineNumber]]]) - 导入文件的文件名当前模块,使用我的库的用户文件 - 让我们将该文件称为“/src/Example5.tsx”。(关于“名称”我当然是指相对路径)

现在,我需要弄清楚如何获取该文件名(以及稍后的行号)。

(我确实尝试从“moudle.parents”对象中获取它作为其他类似问题的答案,但没有任何模块对象的父属性。 是最接近帮助我的。)

必须有一种方法可以做到这一点,因为反应本身会向用户指出他出错的地方。我现在在Example5 中留下了一个错误示例只需单击Example5)。您可以自由地使用它,如果您想出解决方案,请分享。

简化示例5:

/src/Xarrow.tsx:184:12
    if (!("current" in props.start))
      throw Error(
        `'start' property is not of type reference.
        maybe you set 'start' to other object and not to React reference?.\n`
      );
Run Code Online (Sandbox Code Playgroud)