gpt4 book ai didi

common-lisp - 错误: Unbound variable: *AJAX-PROCESSOR* using HT-SIMPLE-AJAX

转载 作者:行者123 更新时间:2023-12-04 03:02:18 24 4
gpt4 key购买 nike

我使用 HT-SIMPLE-AJAX 通过 AJAX 提供简单的 JSON 结构。如果 Lisp 镜像和服务器启动之后编译由 defun-ajax 定义的函数,那么它会完美地工作。

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

Error: Unbound variable: *AJAX-PROCESSOR* While executing: #, in process listener(1).

Type :GO to continue, :POP to abort, :R for a list of available restarts. If continued: Skip loading "/home/hunchentoot/quicklisp/local-projects/gac-man/run.lisp" Type :? for other options.

功能如下:

(defun-ajax machine-info (serial) (*ajax-processor*)
(let* ((serialn (remove #\" serial)))
(concatenate 'string
"Lots of boring stuff" "here")))

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

(defun start ()
(setup)
(connect-to-database)
(defvar *web-server* (start (make-instance 'hunchentoot:easy-acceptor :port 8080
:document-root #p"~/www/")))
(defvar *ajax-processor*
(make-instance 'ajax-processor :server-uri "/ajax"))
(print "Starting web server...")
(setf *show-lisp-errors-p* t
*show-lisp-backtraces-p* t)
(define-easy-handler (docroot :uri "/") () (docroot)
....
....
(setq *dispatch-table* (list 'dispatch-easy-handlers
(create-ajax-dispatcher *ajax-processor*)))))

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

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

最佳答案

看来您的 defun-ajax 表单在 start 函数运行之前已加载。这并不奇怪。通常,所有代码都会被加载,然后才会调用入口点。

您应该始终对函数体中出现的 defvardefundefparameter 等形式保持高度怀疑。他们不属于那里。将它们作为顶级表单,以便它们作为程序的一部分加载。在显示的 start 函数运行期间定义的大多数内容实际上应该是顶级表单。

关于common-lisp - 错误: Unbound variable: *AJAX-PROCESSOR* using HT-SIMPLE-AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49417566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com