1

如果问题标题可能不方便,我提前道歉。我很确定 Ubuntu Server 12.04 不是原因,但我可以解释诀窍在哪里......

我的网站使用带有 LESS 的 Bootstrap 及其客户端编译(我正处于开发周期,所以我想将它保留在客户端上)。在我的本地实例(装有 Ubuntu 12.04 的笔记本电脑)上一切正常,但从我的服务器实例(在 Ubuntu Server 12.04 上运行)请求相同的网站时不会生成样式。

两者都使用相同的 mod 运行 Apache 2.2.22:别名、auth_basic、authn_file、authz_default、authz_groupfile、authz_host、authz_user、autoindex、cgi、deflate、dir、env、headers、mime、negotiation、php5、reqtimeout、rewrite、setenvif、ssl , 地位。


我从我的本地实例(Ubuntu 12.04)得到的效果很好!

<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <title>My website</title>
        <meta content="width=device-width, initial-scale=1.0" name="viewport">
        <meta content="" name="description">
        <meta content="alterphp" name="author">
        <link href="/bundles/mywebsite/css/main.less" type="text/css" rel="stylesheet/less">
        <link href="/bootstrap/less/responsive-768px-979px.less" type="text/css" rel="stylesheet/less">
        <script type="text/javascript" src="/jquery/jquery.js"> ... </script>
        <script type="text/javascript" src="/jquery.form.js"> ... </script>
        <script type="text/javascript" src="/bundles/mywebsite/js/less-1.3.0.min.js"> ... </script>
        <style id="less:bundles-mywebsite-css-main" type="text/css" media="screen"> **Style is well processed** </style>
        <style id="less:error-message" type="text/css" media="screen"> ... </script>
    </head>
    <body>
        ...
    </body>
</html>

使用 FireBug,我可以看到“网络”选项卡中只有两个主要的较少文件显示为已下载。main.less导入更少的文件,这些文件都在 main.less 响应中处理。


我从我的服务器实例(Ubuntu Server 12.04)得到的东西不起作用!

<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <title>My website</title>
        <meta content="width=device-width, initial-scale=1.0" name="viewport">
        <meta content="" name="description">
        <meta content="alterphp" name="author">
        <link href="/bundles/mywebsite/css/main.less" type="text/css" rel="stylesheet/less">
        <link href="/bootstrap/less/responsive-768px-979px.less" type="text/css" rel="stylesheet/less">
        <script type="text/javascript" src="/jquery/jquery.js"> ... </script>
        <script type="text/javascript" src="/jquery.form.js"> ... </script>
        <script type="text/javascript" src="/bundles/mywebsite/js/less-1.3.0.min.js"> ... </script>
        <style id="less:error-message" type="text/css" media="screen"> ... </script>
    </head>
    <body>
        ...
    </body>
</html>

没有从 main.less 处理任何样式......使用 FireBug,我可以看到从main.less导入的所有 less 文件都显示为在“网络”选项卡中下载。

编辑 1: 我访问了我的页面,并且每个资源一个接一个(每个 LESS 文件都是可访问且完整的)。我在“网络”选项卡中没有错误,只是在我的服务器实例上没有处理 LESS 样式......


我对这个谜有任何建议!

4

2 回答 2

1

对我来说,问题来自 less.js

https://github.com/cloudhead/less.js/blob/master/dist/less-1.3.0.js

查看第 3107 至 3112 行

less.env = less.env || (location.hostname == '127.0.0.1' ||
                    location.hostname == '0.0.0.0' ||
                    location.hostname == 'localhost' ||
                    location.port.length > 0 ||
                    isFileProtocol ? 'development'
                                                     : 'production');

您可以尝试通过在第 3112 行之后添加来强制 less.env 的值。

less.env ='production';

或者

less.env ='development';

例如:如果您的开发服务器有一个 dns 记录,例如“ubuntuserver”,并且您使用 url “http://ubuntuserver”访问网络服务器

然后 less.env='production'; 而且因为资源是本地的,所以出了点问题。

于 2012-06-13T12:55:33.607 回答
1

当我发现 LESS 的调试模式时,强制less.env进行开发对我很有帮助……甚至我的本地实例也有一个主机名,所以 less.env 始终是“生产”,我从来没有看到 LESS 的任何错误。

我的错误是我导入的文件较少,子目录或相对路径过多。抱歉这个含糊的解释,但这是我在 github 上从这个问题中得到的:https ://github.com/cloudhead/less.js/issues/723

于 2012-06-13T20:45:15.080 回答