小编gui*_*ui3的帖子

如何在 sapper (svelte) 中捕获服务器错误

我正在将我的小网站从 express+handlebars 翻译成 express+sapper 项目。

我想捕获服务器端错误(例如,当您转到 /api/error 时出现自愿错误)并使用sapper _error.svelte模板呈现它们。

我尝试在没有自定义处理程序的情况下抛出错误,但它返回一个只有错误堆栈的丑陋文本页面,并且似乎没有被工兵的错误处理程序捕获

所以我添加了我自己的错误处理程序,我可以渲染 HTML(裸露的,还没有 css)但是有没有办法可以使用 sapper _error.svelte 模板?

// ----------------------- src/server.js
import sirv from 'sirv'
import express from 'express'
import compression from 'compression'
import * as sapper from '@sapper/server'

import fatal500 from './middlewares/fatal500'

const { PORT, NODE_ENV } = process.env
const dev = NODE_ENV === 'development'

const app = express()

app.use(compression({ threshold: 0 }))
app.use(sirv('static', { dev }))

// the voluntary error thrower --------------------------------
app.get('/api/error', (req, res, next) => { …
Run Code Online (Sandbox Code Playgroud)

error-handling svelte sapper

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

Node js 中的最大行数:child-process.exec

问题

节点child-process有限制吗?我该如何获取(逐块)像 git show 这样的巨大命令输出和一个巨大的文件?


一般问题

我尝试解析结果git show <commit sha>,有一个巨大的文件(308 344 行)

运行时git show > showed_by_git.txt我有正确的输出,包含所有文件,结果为 118 667 行

当运行节点时child-process我只检索 32 602 行...


我的测试及其结果

我简化了我的代码,并用于child-process在停止流程之前计算字符数和它解析的行数。

结果显示,它停在 32 000 多行,而不是预期的 118 667 行

如果您有一个包含最近提交的一些 HUUUGE 文件的存储库,您可以在家重现此内容

const childProcess = require('child_process')

function fetchCommand (command) {
  return new Promise((resolve, reject) => {
    const sub = childProcess.exec(command)

    let chars = 0
    let lines = 0

    sub.stdout.on('data', function (chunk) {
      chars += …
Run Code Online (Sandbox Code Playgroud)

git child-process large-data node.js

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

PyQt:以编程方式选择 QTreeView 中的行并发出信号

我想以编程方式在 QTreeView 中选择一行,我在这里找到了 95% 的答案。

select()方法完美地完成了这项工作,只是它似乎没有触发任何单击视图的事件。

我通过自己调用所需的信号找到了一种解决方法 - 但是是否有任何提示可以模拟人类点击并发送所有相关信号的方法?

这是我的解决方法(Python):

oldIndex=treeView.selectionModel().currentIndex()
newIndex=treeView.model().indexFromItem(item)
#indexes stored----------------------------------
treeView.selectionModel().select(
    newIndex,
    QtGui.QItemSelectionModel.ClearAndSelect)
#selection changed-------------------------------
treeView.selectionModel().currentRowChanged.emit(
    newIndex,
    oldIndex)
#signal manually emitted-------------------------
Run Code Online (Sandbox Code Playgroud)

python qt pyqt selection qtreeview

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