小编Vic*_*ens的帖子

去抖动@HostListener事件

我正在Angular2中实现一个简单的无限滚动指令.我正在使用@HostListener('window:scroll')滚动事件并解析数据$target.

问题是,对于每个滚动事件,一切都将被再次检查而不需要.

我检查了离子infinite-scroll指令的灵感,但他们没有使用@HostListener,我猜他们需要更精细的控制.

我在搜索https://github.com/angular/angular/issues/13248时最终遇到了这个问题,但找不到任何方法来做我想要的事情.

我想如果我创建一个Observable,用debounce和push(next)项目订阅它,我会达到我想要的行为,但我无法做到这一点.

rxjs angular

19
推荐指数
3
解决办法
7918
查看次数

child_process.fork没有在打包的电子应用程序内启动快速服务器

我有一个电子应用程序,我不仅需要运行用户界面,还需要启动一个快速服务器,为通过网络连接的人提供文件.

如果我正常启动电子和快速服务器,我的一切都在工作,但我非常有信心我需要在不同的线程中运行服务器,以避免棘手的接口,甚至服务器的问题.

为此,我尝试使用child_process.fork运行我的快速服务器,它在我使用npm start时工作,但是当我electron-builder用来创建.exe时,安装的程序不会启动快速服务器.

我尝试使用以下命令立即运行我的服务器:

require('child_process').fork('app/server/mainServer.js')

我尝试了几个更改,为文件添加前缀__dirname,process.resourcesPath甚至对生成的文件路径进行硬编码; 更改fork选项以通过cwd: __dirname,detached: truestdio: 'ignore'; 甚至尝试使用spawnwith process.execPath,它也可以使用npm start但不会在打包时(它会不断打开我的应用程序的新实例,看起来很明显)

注意:如果我不立即分叉并且需要服务器脚本,使用require('server/mainServer.js')它可以在打包的应用程序上运行,所以问题最不像快递本身.

注2:我必须asar: false解决其他问题,所以这不是解决问题的方法.

我提出了一个小git项目来显示我的问题:

https://github.com/victorivens05/electron-fork-error

任何帮助将受到高度赞赏.

child-process node.js express electron

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

从VS Code运行nest.js.

所以,我正在使用这个新的框架http://nestjs.com/,因为它允许在Node上使用Typescript,所以看起来非常棒,很可能是有角度的.

使用启动程序https://github.com/kamilmysliwiec/nest-typescript-starter,我可以npm run start毫无问题地运行它,但由于项目中有.vscode,我假设我可以使用VS Code来运行和获取一些调试能力.

问题是当我直接从VS Code运行时,没有更改代码中的任何内容,我得到以下问题:

Error: Cannot find module 'nest.js'

我尝试从VS代码运行,无论是否从NPM运行,都没有成功.

提前致谢.

node.js typescript nestjs

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

使用nestjs和multer上传文件

由于nestjs是一个快速应用程序,因此可以使用任何库来处理使用嵌套的上传,并且由于它提供了Midlewares,因此也可以使用multer.我的问题是:使用nestjs处理文件上传的最佳方法是什么?

nestjs

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

从电子应用程序中设置服务器

我在寻找这个方面没有取得任何成功,因为我主要发现一些误导性的问题,关于人们想要使用来自电子应用程序内部服务器的数据。那不是我的情况。

我有一个常规应用程序,它使用互联网上的服务器,就像其他任何应用程序一样,但我们希望将其提供给没有互联网的学校(没有任何或没有可靠的互联网),所以我想做的是创建我的服务器的一个版本,它从一个电子exe运行,并为连接到wifi(但没有互联网)的学生提供文件访问。该过程“离线”完成后,我将从电子应用程序本身同步数据。

我尝试从Express运行服务器,但到目前为止没有任何进展。我尝试将节点服务器中的完全相同的代码放入 main.js 文件中,但没有成功。

我知道这不是电子应该做的,如果你确信没有办法做到这一点,请告诉我,以便我可以寻找另一种选择。

node.js express electron

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

如何在Typescript中使用Immer

我正在尝试将Immer与已经使用Typescript的react项目一起使用。我在文档或其他任何地方都找不到如何在Typescript中实际使用immer的方法。

到目前为止,我有:

export interface IProps { }

export interface IState {
  names: string[]
}

export class ListNames extends React.Component<IProps, IState> {
  constructor(props: IProps) {
    super(props)
    this.state = { names: [] }
  }

  addName = (name: string) => {
    this.setState(produce(draftState => {
      draftState.names.push(name)
    }))
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

这给了我两个错误:

  1. [ts] Object is possibly 'null'
  2. [ts] Property 'names' does not exist on type 'DraftObject<Pick<IState, never>>'

在此处输入图片说明

设置的类型draftStateIState将无法正常工作。我做了什么,使得它的工作是铸draftStateIState之前,我使用它。

在此处输入图片说明

问题是:我可能想多次使用draftState,所以至少很不方便。

将Immer与Typescript一起使用的正确方法是什么?

typescript reactjs

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