小编TJB*_*man的帖子

为 Cypress 指定 tsconfig.json 位置

我正在尝试使用带有 Typescript 的 Cypress,但 Cypress 找不到tsconfig.json我为其创建的文件。我也有一个自定义的目录结构(因为我讨厌根目录中有一堆配置文件,所以我把它们放在一个配置目录中)。

项目目录结构

/
??? package.json
??? configs/
?   ??? cypress.json
??? src/
?   ??? cypress/
?   ?   ??? tsconfig.json
Run Code Online (Sandbox Code Playgroud)

赛普拉斯打开命令

//  package.json

"scripts": {
    "cypress:open": "cypress open --config-file configs/cypress.json"
},
Run Code Online (Sandbox Code Playgroud)

在上面的脚本中,--config-file标志告诉 cypresscypress.json配置文件的位置,这很棒,因为我可以将该文件放在任何我想要的地方。但是,现在我需要指示 Cypress 在哪里可以找到它的tsconfig.json文件。

/configs/cypress.json(告诉 Cypresscypress/目录在哪里)

{
  "fixturesFolder": "src/cypress/fixtures",
  "integrationFolder": "src/cypress/integration",
  "pluginsFile": "src/cypress/plugins/index.js",
  "screenshotsFolder": "src/cypress/screenshots",
  "videosFolder": "src/cypress/videos",
  "supportFile": "src/cypress/support/index.js"
}

// is there no option to set tsconfig.json path????
Run Code Online (Sandbox Code Playgroud)

官方文件说,只是把它的cypress/目录中。根据文档,那应该在 …

typescript cypress

15
推荐指数
2
解决办法
4108
查看次数

VS Code 仅在打开时识别 custom.d.ts

我在一个custom.d.ts文件中有一些自定义的 Typescript 声明,当该文件打开时,VS code 将正确读取我的 TS,但是如果文件关闭,VSCode 不会“知道”这些 TS 定义,并且我的整个文件上都会出现红色下划线代码。

一个问题是我的tsconfig.json文件不在根目录中,我的custom.d.ts文件也不在根目录中。为什么?因为根目录中的配置文件太愚蠢了,我讨厌它。为什么这样的配置文件不能放在配置目录中???

不管怎样,我怎样才能指示 VSCode 了解我的custom.d.ts文件呢?同样,如果文件打开,VSCode 知道这些定义,但是当我关闭文件时,VSCode 会忘记这些定义,并且打字稿的其余部分会出现红色错误下划线...

目录结构:

/
| - package.json
| - .gitignore
| - client/
    | - client source code.... 
| - server/
    | - @types/
        | - custom.d.ts 
    | - configs/ 
        | - tsconfig.json
        | - .develop.env
Run Code Online (Sandbox Code Playgroud)

typescript visual-studio-code

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

为 IE 10/11 转译 NextJS;'弱集未定义'

我有一个正在构建的 NextJS 网站,它很棒,只是它在 IE 10/11 中不起作用,因为某些代码没有被正确转换。我对 babel 和 webpack 真的很不擅长,以前从来没有自己配置过它们。我已经尝试通过在线阅读两天来解决问题,但似乎没有任何效果对我有用。

我得到的确切错误是weakSet is not defined,它来自 common.js 文件。

这是我的 .babelrc 文件,位于我的项目的根目录中。

// .babelrc

{
    "presets": ["next/babel"],
    "plugins": [
        ["styled-components", { 
            "ssr": true, 
            "displayName": true, 
            "preprocess": false 
        }]
    ]
}
Run Code Online (Sandbox Code Playgroud)

我的 package.json

{
  "name": "bradshouse",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "next",
    "build": "next build",
    "start": "next start"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "next": "^7.0.2", …
Run Code Online (Sandbox Code Playgroud)

reactjs babeljs next.js

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

将数据属性与 Material UI 和 Typescript 结合使用

我正在尝试向 React 中的按钮添加 data-test-id 属性,但 Typescript 对此很生气。如何将此属性添加到所有材质组件?

import { Button } from '@material-ui/core'

<Button dataTestId='my-test-id'>
  Click Me!
</Button>
Run Code Online (Sandbox Code Playgroud)

打字稿错误:

TS2769: No overload matches this call.
  Overload 1 of 3, '(props: { href: string; } & { children?: ReactNode; color?: Color; disabled?: boolean; disableElevation?: boolean; disableFocusRipple?: boolean; endIcon?: ReactNode; fullWidth?: boolean; href?: string; size?: "medium" | ... 1 more ... | "small"; startIcon?: ReactNode; variant?: "text" | ... 1 more ... | "contained"; } & { ...; } & CommonProps<...> & …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs cypress

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

在 ERR_REQUIRE_ESM 中使用 lowdb 结果

我正在尝试在 Node 和 Typescript 项目中使用LowDB,但它一直给我一个 ES 模块错误...

错误:

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: C:\{PATH_TO}\node_modules\lowdb\lib\index.js
require() of ES modules is not supported.
require() of C:\{PATH_TO}\node_modules\lowdb\lib\index.js from C:\{PATH_TO}\src\index.ts is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
Instead rename index.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" …
Run Code Online (Sandbox Code Playgroud)

node.js typescript lowdb

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

如何强类型 SvelteKit 请求处理程序?

我有一个独立的 sveltekit 端点,但我没有获得该端点的打字稿类型。

// src/routes/login.ts
export async function post(request) {
  request.body; // shows as 'any' type

  return { status: 200, body: "ok" };
}
Run Code Online (Sandbox Code Playgroud)

参数request有一个any类型,而函数本身有一个返回类型,Promise<any>这不是我想要的。

我从 sveltekit 定义的类型中找到了,但我不确定如何实现它们。
import type {RequestHandler} from '@sveltejs/kit'

我如何告诉打字稿该post()函数是类型RequestHandler

另外,tsconfig.json我的项目根目录中有一个自定义文件,但即使删除它,我仍然无法获得端点函数的正确类型。

// tsconfig.json
{
    "extends": "./.svelte-kit/tsconfig.json",
    "compilerOptions": {
        "baseUrl": ".",
        "paths": {
            "$src/": ["src/"],
            "$src/*": ["src/*"]
        },
        "typeRoots": ["node_modules/@types", "src/types"]
    }
}

Run Code Online (Sandbox Code Playgroud)

typescript sveltekit

4
推荐指数
2
解决办法
7499
查看次数

按特定键值对对象数组进行排序 Java脚本

我在从一个正在从事的小型个人项目中排序特定对象数组时遇到问题。我以前从来没有遇到过使用Array.prototype.sort()函数的麻烦,但是我想知道有关多个对象键的某些问题是否正在影响它...

盯着它看的时间比我想承认的要长,现在只需要寻求帮助即可。:|

目标:相对于每个对象的特定key.value按字母顺序对对象数组进行排序。

提前致谢!

JS小提琴在这里

排序功能示例-(尽管如此,我还是建议您查看完整的小提琴)。

var sorted = array.sort((a, b) => { return a.key > b.key; });
Run Code Online (Sandbox Code Playgroud)

解决了

@Ryan帮助我发现返回布尔值是不够的,您需要显式返回正数或负数或0。

@Brk向我展示了一种很棒的快速方法。

这篇文章有非常详细的描述。 用JavaScript排序:返回布尔值是否足以用作比较函数?

谢谢大家!对不起,重复帖子:|

javascript arrays sorting

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

Typescript 有条件需要的参数

我想编写一个接受一些参数的函数,它们应该是可选的,但如果它们存在,那么我希望需要其他参数。

这是一个非常愚蠢的例子:

type PersonInfo = {
  name: string; 
  age: number; 
  pets?: boolean; 
  petNames?: string[]; 
}
const recordPersonInfo = (options: PersonInfo) => {
  database.save(options); 
}
Run Code Online (Sandbox Code Playgroud)

所以该pets属性可以被省略,但如果是的话,true那么我想petNames被要求。我如何告诉 Typescript 执行此操作?

typescript

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

如何在 sveltekit 中导入图像并在 css 中使用

我正在使用 sveltekit,我想知道如何导入图像并在 CSS 背景属性中使用它。
这是我尝试过的:

<script>
    import img from '$lib/images/background-shaded.jpg';
</script>

<div>
    <h1>Hello World</h1>
</div>

<style>
    div {
        background-image: url({img});
    }
</style>

Run Code Online (Sandbox Code Playgroud)

现在,我只是将图像放在静态文件夹中并通过它的 URL 使用。也许这就是推荐的方法......

谢谢。

svelte sveltekit

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

从字符串创建 NodeJS KeyObject

如何从 .env 文件中的随机字符串创建 NodeJS Crypto KeyObject?

我使用jsonwebtoken来创建/验证 JWT,但它无法在 nextjs 中间件边缘函数中运行,因此我想迁移到使用jose。问题是,在 jose 中,您无法使用 .env 文件中的秘密字符串对 JWT 进行签名,您需要创建一个加密 KeyObject 并使用它来对 JWT 进行签名。

// example env file
JWT_SECRET=Swe4g7c?UBm5Nrd96vhsVDtkyJFbqKMTm!TMw5BDRLtaCFAXNvbq?s4rGKQSZnUP
Run Code Online (Sandbox Code Playgroud)

我尝试使用下面的 API 创建 KeyObject,但我收到 jose 的错误:

// example env file
JWT_SECRET=Swe4g7c?UBm5Nrd96vhsVDtkyJFbqKMTm!TMw5BDRLtaCFAXNvbq?s4rGKQSZnUP
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 Uint8Array,因为jose 文档说我可以,但我收到此错误:

import crypto from 'crypto'; 
const key = crypto.createSecretKey(process.env.JWT_SECRET, 'utf-8'); 
const jwt = new jose.SignJWT(payload).sign(key); 

// Error: KeyObject or CryptoKey instance for asymmetric algorithms must not be of type "secret."
Run Code Online (Sandbox Code Playgroud)

预先感谢您的任何帮助、评论、链接、资源!

cryptography node.js jwt jose next.js

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