带有Twitter Bootstrap的Ubuntu Server 12.04上的LessCss客户端问题

时间:2012-06-10 14:34:33

标签: twitter-bootstrap less ubuntu-server ubuntu-12.04

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

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

两者都使用相同的mod运行Apache 2.2.22:alias,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,status。


我从本地实例获取的内容(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 导入的所有较少文件在网络选项卡中显示为已下载。

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


我对这个谜团有任何建议!

2 个答案:

答案 0 :(得分: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”,并且您使用网址“http:// ubuntuserver”访问网络服务器

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

答案 1 :(得分:1)

强制 less.env 开发帮助了我,因为我发现了LESS的调试模式......即使我的本地实例也有一个主机名,所以less.env总是'生产'我从来没有看到任何来自LESS的错误。

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