【发布时间】:2018-12-10 22:44:21
【问题描述】:
我正在使用 Compojure 1.6.0 构建一个 Web 应用程序。对于第三方 JS 库,我使用 npm 安装它们,这会将它们放在一个名为 node_modules 的文件夹中(不可自定义)。为了服务他们,我这样做了:
(route/files "/node_modules" {:root "node_modules/"})
在开发中运行良好。对于生产,我部署了一个 uberwar,所以在创建战争之前,我只需将这些文件复制到公共资源中:
# deploy.sh
cp -r node_modules/ resources/public/node_modules/
lein ring uberwar
这一切都很好。
现在我想将我的 URI 路径更改为 /static/ 而不是 /node_modules/。我试着改变我的路由线说:
(route/files "/static" {:root "node_modules/"})
然后更新所有指向这些 URI 的 HTML 引用。这在开发中按预期工作(lein ring server-headless),但在生产中(部署的warfile)它失败了。我的 route/not-found 处理程序被 /static/ 下的任何路径调用。
什么给了?为什么 URI 路径与此有任何关系,而且只在一个环境中?
【问题讨论】:
-
哦,我可能已经找到了一个解释:
wrap-defaults自动添加了一个route/resources,所以也许我的开发环境正在使用我的route/files,而产品环境正在使用自动的@987654333 @一。
标签: tomcat clojure war compojure