小编dam*_*ton的帖子

JEST - 语法错误:uuid 库出现意外的标记“导出”

我曾经在仅使用 JavaScript 来使用 Jest 时解决了类似的错误,但目前我无法使用 Typescript 来解决类似的错误。

我的所有测试都运行良好,直到我安装了需要@types/jest-environment-puppeteer,@types/puppeteer和的 Puppeteer @types/expect-puppeteer

安装它们后,puppeteer 测试运行完美,但其他测试开始失败并出现以下错误。

  D:\...\api\node_modules\uuid\dist\esm-browser\index.js:1    
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){export { default as v1 } from './v1.js';
                                                                                      ^^^^^^  

    SyntaxError: Unexpected token 'export'

      at Runtime.createScriptFromCode (../node_modules/jest-runtime/build/index.js:1796:14)   
      at Object.require (../node_modules/@nestjs/common/decorators/core/injectable.decorator.js:4:16)
Run Code Online (Sandbox Code Playgroud)

我做了什么?

allowJs: true打开tsconfig.json并设置transformIgnorePatternson jest 配置。这样笑话就可以从node_modules/ 之后编译文件,此错误停止但测试因另一个奇怪的原因失败。更糟糕的是,测试开始时间增加太多。

所以我保留了allowJs原始设置并更新了笑话配置

"transform": {
   "^.+\\.(t|j)s$": "ts-jest"
}
Run Code Online (Sandbox Code Playgroud)

"transform": {
   "^.+\\.(t)s$": "ts-jest"
}
Run Code Online (Sandbox Code Playgroud)

所以目前 ts-jest 不编译 js 文件。但我认为我无法让 babel 选择js文件的转换。这些是我的笑话配置:

{
  "moduleFileExtensions": ["js", "json", "ts"],
  "rootDir": ".",
  "testEnvironment": …
Run Code Online (Sandbox Code Playgroud)

typescript nest jestjs babeljs puppeteer

60
推荐指数
2
解决办法
3万
查看次数

bcrypt.compare() 或 bcrypt.compareSync()

我对这个主题有一个问题: bcrypt.compare() 是异步的,这是否一定意味着延迟肯定会发生?

由于我的会员级别不允许我发表评论,所以我不得不打开新主题。

我的问题是有什么缺点,或者是否有任何缺点可以使用bcrypt.compareSync()而不是异步版本bcrypt.compare()

compareSync()绝对给出了正确的结果。那么为什么不使用它并使用compare()包装在 Promise 中的呢?它会阻止 NodeJS 为其他用户提供服务吗?

javascript bcrypt mongoose node.js async-await

3
推荐指数
1
解决办法
3951
查看次数

如何使用 React 和 RTK 查询处理 JWT 令牌刷新周期:自动重新获取失败的查询

在我的应用程序中,我有一个令牌刷新端点/refresh,它在 cookie 中设置新的 JWT 刷新令牌并将新的 JWT 访问令牌作为 json 发送回。

由于访问令牌会在 5 分钟后过期,因此我需要在后台实现刷新逻辑,以便在访问令牌过期时启动。

目前我正在做的是通过调用api RTK Query,如果api拒绝查询,我调用refreshTokens突变。

我需要将此逻辑放入所有 api 查询中,如下所示:

 updateProfile(body)
      .unwrap()
      .catch((error) => {
        if (error && error.status === 403) {
          refreshTokens(null); // RTK Query Mutation
          updateProfile(body); // RTK Query Mutation
        }
      });
Run Code Online (Sandbox Code Playgroud)

这样做似乎是重复代码,因为它需要对所有 api 调用实现。

我想知道是否有一个全局解决方案可以在查询被拒绝时自动调用刷新令牌端点。

authentication jwt reactjs redux rtk-query

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