问题标签 [hunchentoot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2914 浏览

amazon-web-services - 部署 Common Lisp Web 应用程序

我想知道如何部署一个用 Hunchentoot、Wookie、Woo 甚至 Clack 编写的 Common Lisp Web 应用程序。

也就是说,假设我编写了一个包含一些文件、包等的应用程序。通常,当我在本地工作时,我只需在 REPL 中运行一个命令来启动服务器,然后使用localhost:8000或类似的东西访问它。

但是,对于将应用程序部署到 AWS EC2 等生产服务器的过程是什么,我感到有些困惑。我应该以什么形式部署 Lisp 代码?有不同的选择吗?如果服务器需要重新启动或遇到问题会怎样?

0 投票
1 回答
215 浏览

common-lisp - 生成内联 javascript 的 cl-who、parenscript 和引号问题

因此,我正在使用以下代码运行 parenscript 教程:

页面呈现,但可点击的链接不起作用。当我查看源代码时,我得到以下信息:

哪个不起作用。我需要用引号“而不是半引号”关闭警报功能。我做错了什么?

0 投票
1 回答
70 浏览

common-lisp - 错误:未绑定变量:*AJAX-PROCESSOR* 使用 HT-SIMPLE-AJAX

我正在使用 HT-SIMPLE-AJAX 在 AJAX 上提供一个简单的 JSON 结构。如果在 lisp 镜像和服务器启动之后defun-ajax编译定义的函数,它会很好地工作。

如果我使用定义的函数加载 lisp 程序(使用ccl --load),我会收到以下错误:

错误:未绑定变量:*AJAX-PROCESSOR* 执行时:#,在进程监听器(1)中。

输入 :GO 继续, :POP 中止, :R 获取可用重启列表。如果继续:跳过加载“/home/hunchentoot/quicklisp/local-projects/gac-man/run.lisp”类型:?其他选项。

功能如下:

ajax 处理器是在另一个函数中创建的,在程序开始时调用:

然而,如果我开始一切,然后稍后通过 slime 编译该函数,它就可以正常工作。为什么会出现这个错误?

我在 64 位 Linux 上使用 Clozure Common Lisp。

0 投票
2 回答
579 浏览

ssl - hunchentoot 用 ssl 定义简单处理程序?

我一直使用define-easy-handler。我现在有一个新铸造的 ssl 证书和相关的 pem 文件,但无法弄清楚 deh 的 ssl 等效项是什么。

例如,我有:

这只是一个简单的形式,其形式如下:

.pem从 freecert 获得了所需的文件,所以我认为我有文件可以转到:SSL-CERTIFICATE-FILE和:SSL-PRIVATEKEY-FILE。我已经尝试了上面的各种参数来完成这项工作,但似乎无法让它发挥作用。有人可以给我一个如何做到这一点的例子吗?

提前感谢您的帮助!

0 投票
1 回答
112 浏览

ssl - 在 LispWorks 中使用 easy-ssl-acceptor

我想在 LispWorks 中使用easy-ssl-acceptorHunchentoot。但是,我看到此类接受器具有以下功能语法#-:hunchentoot-no-ssl

这个特性确实存在于我的*features*列表中,所以我不能使用这个类。这里有什么问题?为什么被:hunchentoot-no-ssl添加到我的*features*?我该如何解决这个问题以便我可以使用该easy-ssl-acceptor课程?

PS:我在 macOS 10.13 上使用 LispWorks 7.1。

0 投票
0 回答
92 浏览

common-lisp - 如何修复clozure common lisp上的hunchentoot ssl接受器错误?

我试图在运行 OS 10.13.6 的 MacBook Pro 上运行 clozure common lisp 1.11.1 上运行 hunchentoot 的 SSL 版本

我首先在 /tmp 目录中创建证书,如下所示:

这是我的lisp代码:

当我尝试https://localhost:7777/secure从浏览器访问时,浏览器上没有显示任何内容,并且 hunchentoot 向日志窗口抛出以下错误:

在此处输入图像描述

未处理的 execption 11执行外部代码时发生异常

有关如何解决此问题的任何建议?

0 投票
0 回答
112 浏览

common-lisp - windows环境下加载hunchentoot时出错

我回到了一个我推迟的项目——它是用 common lisp 编写的休息服务。几个月前,当我使用sbcl 1.3.12时,我运行该项目没有问题。更新sbcl到版本1.3.18后出现了第一个问题。我无法启动Hunchentoot,所以我回到sbcl 1.3.12并且问题得到了解决。然而那是几个月前的事了。

今天我无法运行 Huchentoot 也无法编译使用其包的项目,无论sbcl我使用哪个版本——1.3.121.4.2——我认为通过 quicklisp 提供的 Hunchentoot 版本已经改变。项目的编译返回错误:

现在我什至无法启动 Hunchentoot 服务器。sbcl我使用or没关系clozurecl

我试过(use-package 'hunchentoot')但没有帮助。

虽然我在Linux环境下没有这样的问题,但是我习惯了在windows下工作,我想修复它。

是否有可能或者我应该忘记将Windows与常见的 lisp 一起使用?

0 投票
2 回答
110 浏览

lisp - cl-who 在函数调用中传递流

我正在使用 cl-who(通过 hunchentoot),到目前为止完全成功,但有一件事我无法弄清楚,而且我的解决方法很丑陋,所以我希望有一个简单的解决方法。我的 hunchentoot 简单处理程序调用看起来像这样的函数:

一切都很好。

但是,当我想从 foo 中调用辅助函数以执行...任何我想做的子工作时,我无法弄清楚如何使 CL-WHO 的 HTM 上下文通过调用进行。例如,这很好用:

但这不起作用:

(我已经尝试了各种操作,但无济于事。)

我确定我做错了一些简单的事情;必须在任何 subfn 中恢复为 t 格式是非常丑陋的,尤其是。bcs 我不能使用 cl-who 方便的 html 宏。

0 投票
1 回答
198 浏览

common-lisp - Hunchentoot 是未知的处理程序

我的基于 CI 构建的 web 应用程序的二进制文件无法运行,如果在本地构建则成功。什么可能导致这些差异,什么会导致 Hunchentoot 失败并显示此消息?

以下是不同的堆栈跟踪:

和本地:

它一直在听。

它们使用相同的框架版本(最新)运行,它们似乎运行相同的 Quicklisp dist 版本(参见lack-20181018第一个堆栈跟踪),这是我的本地版本。CI 建立在daewok/lisp-devel-docker 之上

我使用这个起点:

再次感谢。

0 投票
1 回答
130 浏览

post - Hunchentoot 处理复选框发布请求

我正在用 Cl-who、Hunchentoot 和 Common Lisp 开发一个需要处理客户订单的 Web 应用程序。因为他们显然可以订购不止一件商品,所以我认为 Checkbox 是最有意义的。但是,问题是当我定义一个简单处理程序时,如果您有一系列具有相同名称和不同值的复选框,它不会像 PHP 中的数组那样接收结果数组。相反,它将变量视为字符串,因此我无法遍历每个已检查的 Box。这是我的代码片段:

这是我设置的处理程序(也许我需要在这里使用循环宏?)这只是一个示例,因为当我发现这个问题时,我显然会处理传递给 easy-handler 的每个参数:

这些只是有人可以检查的三个潜在输入。所以让我们假设客户检查了所有三个......只有奶酪球会返回,因为 Lisp 将名称“food[]”视为单独的字符串。我的意思是,在 PHP 中,名称 ("food[]") 的变量将像数组一样被处理。所以在 HTML 和 PHP 中它看起来像这样:

假设客户选择了所有三个复选框,我可以在 PHP 中执行类似的操作:

但是,尚不清楚如何在 Common Lisp 中使用 Cl-WHO 和 Hunchentoot 实现类似的功能。我能想到的唯一另一种选择是将大约 30 个参数传递给 easy-handler,但这听起来是解决这个问题的效率最低的方法。我知道还有一个 CL 表单处理库,但我希望避免走这条路,尽管如果这是唯一可能的解决方案,我会这样做。给每个复选框一个不同的名称似乎是解决这个问题的最糟糕的方法。