小编plu*_*een的帖子

如何更改 nx 应用程序的 ts 路径别名

我正在将现有应用程序导入 NX monorepo,其文件结构与默认应用程序略有不同。它看起来像这样:

apps
  my-app
    src
      feature-1
      feature-2
      main
        components
          my-component.tsx
        index.tsx
    tsconfig.json
Run Code Online (Sandbox Code Playgroud)

由于所有内容都位于 src/main 内,因此我希望所有绝对导入都从 src/main 开始。

// src/main/index.tsx
import MyComponent from 'components/my-component'
Run Code Online (Sandbox Code Playgroud)

哪个应该解决src/main/components/my-component。显然,我绝对可以导入这个特定的示例,但实际的应用程序是一个巨大的应用程序,这不是一个可行的解决方案。

在这个原始的单一应用程序存储库中,我们通过paths在内部设置来实现这一点tsconfig

// tsconfig.json
{
  "compilerOptions": {
     ...     
     "paths": {
       "*": ["src/main/*", "node_modules/*"]
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,由于 NX 的根 tsconfig 使用路径映射到库,因此这不再是有效的解决方案。我如何告诉 NX 解决我的导入问题,src/main而不是src

我尝试在我的 webpack 配置中进行设置resolve.modulespath.resolve(__dirname, 'src/main')但似乎不起作用。我还尝试baseUrl在应用程序的 tsconfig 中进行设置,但这会消除我导入库的能力。

typescript monorepo nrwl-nx

5
推荐指数
1
解决办法
2万
查看次数

为什么 fireEvent 可以工作,而 userEvent 却不能工作?

简而言之,我有一个带有 onclick 事件的表行。我通过以下方式得到这个

const row = screen.getByRole('row', { name: /My row/i })
await userEvent.click(row)
Run Code Online (Sandbox Code Playgroud)

这不会触发事件处理程序。但是,如果我这样做:

const row = screen.getByRole('row', { name: /My row/i })
fireEvent.click(row)
Run Code Online (Sandbox Code Playgroud)

这很好用。

我知道 userEvent 使用更多事件来模拟行单击,但事件处理程序在实时应用程序中也可以正常工作。有什么原因可能userEvent无法工作吗?

react-testing-library user-event

4
推荐指数
1
解决办法
1262
查看次数