小编SIL*_*ENT的帖子

无法解析模块“stream/promises”的路径

对于 TypeScript Nodejs 应用程序中的以下导入

import { pipeline } from "stream/promises";
Run Code Online (Sandbox Code Playgroud)

vscode / eslint 正在抱怨Unable to resolve path to module 'stream/promises'

样本

这突然开始发生。

node -v v16.13.2
pnpm -v 6.29.1
"@types/node": "^17.0.12"
Run Code Online (Sandbox Code Playgroud)

stream/promises是节点的一部分。我已经确认管道功能和打字稿类型存在并且可以工作,并且整个应用程序仍然可以运行。

console.log({ pipeline }); // { pipeline: [Function: pipeline] }
Run Code Online (Sandbox Code Playgroud)

导入工作正常stream进行,没有任何投诉。我已在 Windows 10 和 Linux 计算机上确认了此错误。发生了什么事以及如何解决而不忽略它?

javascript import typescript eslint visual-studio-code

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

C# 选择实用程序类型

在 Typescript 中,有一个Pick Utility Type。在 C# 中可以做同样的事情吗?例如:

public class SomeClassA {
    public string SomePropA { get; set; }
    public string SomePropB { get; set; }
    public string SomePropC { get; set; }
}

public class SomeClassB Pick<SomeClassA, SomePropA, SomePropB> {
}
Run Code Online (Sandbox Code Playgroud)

c# types typescript

10
推荐指数
0
解决办法
812
查看次数

Apollo-server 2 验证中间件

我想向 apollo 服务器添加一个验证层。它应该在每个 graphql 查询/突变之后但在解析器函数之前运行。验证层需要知道被调用的 graphql 查询/变异以及传递的参数。如果无效,它将抛出错误并阻止解析器功能运行。

我不清楚在哪里注入它而不手动将它放在每个解析器函数中。

javascript graphql apollo-server

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

NodeJS:抛出错误仍然会带来性能损失吗?

根据nodejs框架的不同,通常有两种方法来管理错误。

  • 扔掉它们(即throw new Error('invalid id');
  • 返回它们(即return { 400: 'invalid id' };

由于旧的建议是抛出错误效率低下,我总是尝试返回错误,但我更喜欢抛出错误,因为它们更方便。唯一一篇提到性能影响的文章是 Node v0.1。

这仍然是真的吗?


更新1

Nvm,我意识到我可以自己测试一下。以下代码供参考:

import { performance } from "perf_hooks";

function ThrowException() {
    throw new Error("invalid exception");
}
const _ATTEMPT = 1000000;
function ThrowingExceptions() {
    const p1 = performance.now();
    for (let i = 0; i < _ATTEMPT; i++) {
        try {
            ThrowException();
        } catch (ex: any) {
            // log error
        }
    }
    const p2 = performance.now();
    console.log(`ThrowingExceptions: ${p2 - p1}`);
} …
Run Code Online (Sandbox Code Playgroud)

javascript exception try-catch throw node.js

6
推荐指数
0
解决办法
1670
查看次数

音频阵列缓冲区到音频元素

我正在创建一个chrome应用程序,用于解密从我的PBX服务器发送到我的Gmail帐户的mp3并播放它们.我已经完成了除gmail中的音频播放器之外的所有内容.我有两个选择:

  1. 使用Web Audio API(我让它工作但无法弄清楚如何制作一个功能齐全的搜索栏).
  2. 从数组创建一个createObjectURL并传递给audio tag或soundmanager2.

我想尽可能多地重用代码,并且无法找到带有搜索条的预制Web Audio API播放器.所以,我尝试尝试选项2,以下是我去的地方

window.AudioContext = window.AudioContext || window.webkitAudioContext;
var context = new AudioContext();
context.decodeAudioData(arr.buffer, function (soundBuffer) {
    windowURL = window.URL || window.webkitURL;
    var audio = document.createElement("audio");
    audio.src = windowURL.createObjectURL([soundBuffer]);
    var someDiv = document.getElementById("testDiv");
    someDiv.appendChild(audio);
    audio.onload = function (e) {
        windowURL.revokeObjectURL(this.src);
    }
}, function (err) {
   console.log("couldnt decode buffer");
});
Run Code Online (Sandbox Code Playgroud)

它失败并且"无法在'URL'上执行'createObjectURL':未找到与提供的签名匹配的功能." 我该如何正确编码这个函数来创建一个可以被chrome的mp3播放器或soundmanager2使用的url?

javascript audio html5 audio-player google-chrome-extension

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

在WPF RichTextBox中将特定文本设置为粗体

我正在扩展WPF Richtextbox的功能。我希望某些文本在键入时变为粗体。我能够使某些文本变为粗体,但粗体字后面的文本也将变为粗体...

这是我的代码示例:

private bool _Running = false;
void CustomRichTextBox_TextChange(object sender, TextChangedEventArgs e)
{
    if(_Running)
        return;
    _Running = true;

    //Logic to see if text detected

    //Logic to get TextPointers

    //Logic to get TextRange
    var boldMe = new TextRange(textPointer1, textPointer2);
    //Bold text
    boldMe.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);

    _Running = false;
}
Run Code Online (Sandbox Code Playgroud)

我想要:

没结结没结

但是我得到的是:

没结没结没结没结

**请注意,键入时它将变为粗体。

如何防止加粗单词后的文本也加粗?


由于提供的链接的可接受解决方案适用于WinForms,其余解决方案适用于预设文本,因此没有重复的问题。

c# wpf richtextbox textrange

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

React Hooks 多个带有单独倒计时的警报

我一直在尝试构建一个带有多个警报的 React 应用程序,这些警报在一段时间后消失。示例:https : //codesandbox.io/s/multiple-alert-countdown-294lc

import React, { useState, useEffect } from "react";
import ReactDOM from "react-dom";

import "./styles.css";

function TimeoutAlert({ id, message, deleteAlert }) {
  const onClick = () => deleteAlert(id);
  useEffect(() => {
    const timer = setTimeout(onClick, 2000);
    return () => clearTimeout(timer);
  });
  return (
    <p>
      <button onClick={onClick}>
        {message} {id}
      </button>
    </p>
  );
}
let _ID = 0;
function App() {
  const [alerts, setAlerts] = useState([]);
  const addAlert = message => setAlerts([...alerts, { id: _ID++, message }]); …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-hooks

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

useStateChange - 是否有更高效的方法来保持值更新而不使用 useState / useEffect

所以我厌倦了使用一堆memo, useMemo, 并useCallbacks保持我的分层应用程序响应。相反,我构建了一个名为的反应钩子useStateChange(我通常不需要 onChange 提供的即时更新)。

function useStateChange(valuesInit) {
  const [values, valuesSet] = useState(valuesInit);
  useEffect(() => valuesSet(valuesInit), [valuesInit]);
  const onChange = useCallback(({ target: { value } }) => valuesSet(value), []);
  return [onChange, values, valuesSet];
}

function TestInput({ value0, onBlur }) {
  console.log("Test ran");
  const [onChange, value1] = useStateChange(value0);
  return (
    <>
      <h4>
        Value1:{" "}
        <input type="text" value={value1} onChange={onChange} onBlur={onBlur} />
      </h4>
      <h5>Value1: {value1}</h5>
    </>
  );
}
Run Code Online (Sandbox Code Playgroud)

可以在CodeSandbox找到工作示例。

由于此功能几乎将用于每个输入,是否有任何方法可以进一步提高性能?

我知道人们会抱怨不要过度优化,但这将成为我的应用程序的重要组成部分,如果它的功能处于最佳状态,它会更好。如果我对我的useStateChange功能进行了优化,我就不会遇到当前的性能问题...

javascript performance reactjs react-hooks

5
推荐指数
0
解决办法
111
查看次数

将 TypeScript 类型打印到控制台/文件中

我有多种类型,形成了当前在我的服务器上使用的更大、复杂的类型。是否可以将更大、复杂的类型打印到控制台/文件中?

例子

type TypeA = {
  prop1: string;
  prop2: number;
}

type TypeB = Omit<TypeA, "prop2">;

console.logType(TypeB);
// {
//   prop1: string;
// }
Run Code Online (Sandbox Code Playgroud)

javascript typescript

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

knex.where 是否容易受到 sql 注入攻击?

这是/sf/answers/3523659331/的后续问题。

它提到knex('table').where('description', 'like', '%${term}%')容易受到 sql 注入攻击。甚至评论也提到第一种情况容易发生注入攻击。然而,提供的参考文献从未提到.where容易受到注入攻击。

这是一个错误吗?为什么 knex 允许.where容易受到注入攻击而不是.whereRaw('description like \'%??%\'', [term]). 不是在这两种情况下参数都被参数化了吗?

javascript sql knex.js

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

接下来 JS 图像居中,同时屏幕尺寸增加

我在使用 NextJS 的组件时遇到了困难Image。我想设置一个横幅图像。无论屏幕尺寸如何,该图像在任何时候都只能覆盖屏幕上的一定空间。max-height: 30vh我已经让它主要与和的组合一起使用overflow: hidden。但是,当屏幕尺寸发生变化时,我似乎无法使图像居中。它应该从看到整个图像到聚焦在床上有所不同。相反,它的重点是图片的天花板。

实时示例:https ://codesandbox.io/s/nextjs-image-layout-lc7vb?file=/src/pages/index.tsx

const Index = (props: IBlogGalleryProps) => (
  <Main
    ...
  >
    <div className="w-full overflow-hidden" style={{ maxHeight: '30vh' }}>
      <Image width="300" height="200" layout="responsive" src="https://images.unsplash.com/photo-1519494080410-f9aa76cb4283?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=1920&q=80" />
    </div>
    ...
  </Main>
);
Run Code Online (Sandbox Code Playgroud)

html javascript css next.js nextjs-image

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

exe编程语言标识

要继续我的课程项目,我需要识别示例exe的编程语言.以下是我对exe的了解:

  1. 使用x86 .Net 4.0框架 - 它通过JetBrains dotPeek程序引用mscorlib .
  2. 有win32 gui和win32按钮和标签 - 根据UI验证的框架ID (仍然使用旧版本).我针对WPF和WinForm示例exe测试了UI Verify框架ID.

起初我假设它是一个C++/CLI项目,但我也发现了一个对System.Windows.Forms的引用和可以反编译为C#的方法.

这个exe编写的编程语言是什么?


更新1:使用ILSpy,我发现exe是"混合+本机代码",根据@xanatos建议.我也注意到它引用了Microsoft.VisualC.


更新2:至于我的参考以及可能需要帮助来识别.net引用的exe的其他人,我做了以下事情:

  1. 通过JetBrains或ILSpy验证引用.Net(.mscorlib)的exe
  2. 检查GUI及其控件,以帮助通过UI验证识别框架ID
  3. .corflags通过ILSpy的IL视图检查以确定它是ILOnly还是混合
  4. 通过ILSpy识别exe的入口点(我必须将其更改为C#View并选择exe)
  5. 检查入口点方法是否hidebysig通过ILSpy(我点击了入口点,它将我重定向到方法,然后我将视图更改回IL)

.net c# c++

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

Javascript 正则表达式货币

我正在尝试创建一个满足以下条件的正则表达式:

  1. 0.01 - 真
  2. 01.01 - 假
  3. 122343.10 - 真
  4. 123,432.10 - 假
  5. 第123话
  6. 123423.1 - 假

我做了以下但它没有按预期工作

^[0\.|1-9\d*\.]\d{2,2}$/
Run Code Online (Sandbox Code Playgroud)

使用https://regexr.com/进行测试

javascript regex currency

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