无法使用无节点编译简单的Less文件

无法使用无节点编译简单的Less文件

我正在尝试编译一个非常简单的较少的仅包含 Bootstrap 的文件:

/* application.less: The most awesomely complicated file in the whole world. */
@import "bootstrap/bootstrap.less";

我使用的是 Ubuntu 12.04 衍生版本,我尝试使用包lessc中找到的编译器node-less

$ sudo apt-get install node-less
...done!
$ ( cd /path/of/less/file/ && lessc application.less )
TypeError: Cannot call method 'charAt' of undefined
    at getLocation (/usr/lib/nodejs/less/parser.js:204:34)
    at new LessError (/usr/lib/nodejs/less/parser.js:213:19)
    at Object.toCSS (/usr/lib/nodejs/less/parser.js:379:31)
    at /usr/bin/lessc:103:28
    at /usr/lib/nodejs/less/parser.js:428:40
    at /usr/lib/nodejs/less/parser.js:94:48
    at /usr/lib/nodejs/less/index.js:113:15
    at /usr/lib/nodejs/less/parser.js:428:40
    at /usr/lib/nodejs/less/parser.js:94:48
    at /usr/lib/nodejs/less/index.js:113:15

没被轻易吓倒,我随后尝试使用 Ruby 版本的 lessc。

$ sudo apt-get remove --purge node-less
$ sudo gem install less
...done!
[WARNING] Please install gem 'therubyracer' to use Less.
/usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- v8 (LoadError)
    from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.8/gems/less-2.2.2/lib/less/java_script/v8_context.rb:2
    from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
    from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.8/gems/less-2.2.2/lib/less/java_script.rb:9:in `default_context_wrapper'
    from /var/lib/gems/1.8/gems/less-2.2.2/lib/less/java_script.rb:17:in `context_wrapper'
    from /var/lib/gems/1.8/gems/less-2.2.2/lib/less/loader.rb:10:in `initialize'
    from /var/lib/gems/1.8/gems/less-2.2.2/lib/less.rb:14:in `new'
    from /var/lib/gems/1.8/gems/less-2.2.2/lib/less.rb:14
    from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
    from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.8/gems/less-2.2.2/bin/lessc:3
    from /usr/local/bin/lessc:19:in `load'
    from /usr/local/bin/lessc:19

快点! Ruby 不知道如何管理依赖关系?!任何。美好的。

$ sudo gem install therubyracer
/usr/bin/ruby1.8 extconf.rb
checking for main() in -lpthread... yes
checking for v8.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/usr/bin/ruby1.8
    --with-pthreadlib
    --without-pthreadlib
    --enable-debug
    --disable-debug
    --with-v8-dir
    --without-v8-dir
    --with-v8-include
    --without-v8-include=${v8-dir}/include
    --with-v8-lib
    --without-v8-lib=${v8-dir}/lib
/var/lib/gems/1.8/gems/therubyracer-0.11.0/ext/v8/build.rb:42:in `build_with_system_libv8': unable to locate libv8. Please see output for details (RuntimeError)
    from extconf.rb:22
    The Ruby Racer requires libv8 ~> 3.11.8
    to be present on your system in order to compile
    and link, but it could not be found.

    In order to resolve this, you will either need to manually
    install an appropriate libv8 and make sure that this
    build process can find it. If you install it into the
    standard system path, then it should just be picked up
    automatically. Otherwise, you'll have to pass some extra
    flags to the build process as a hint.

    If you don't want to bother with all that, there is a
    rubygem that will do all this for you. You can add
    following line to your Gemfile:
        gem 'libv8', '~> 3.11.8'

    We hope that helps, and we apologize, but now we have
    to push the eject button on this install.

    thanks,
    The Mgmt.

我完成了。有没有简单的获得在职的我的发行版上安装了更少的编译器?这真是太荒谬了。

答案1

屏幕的这一侧:

 $ node --version
 v.0.8.16
 $ npm --version
 1.1.69
 $ npm install less
 npm http GET https://registry.npmjs.org/less
 npm http 200 https://registry.npmjs.org/less
 npm http GET https://registry.npmjs.org/less/-/less-1.3.3.tgz
 npm http 200 https://registry.npmjs.org/less/-/less-1.3.3.tgz
 npm http GET https://registry.npmjs.org/ycssmin
 npm http 200 https://registry.npmjs.org/ycssmin
 npm http GET https://registry.npmjs.org/ycssmin/-/ycssmin-1.0.1.tgz
 npm http 200 https://registry.npmjs.org/ycssmin/-/ycssmin-1.0.1.tgz
 [email protected] node_modules/less
 └── [email protected]
 $ ln --symbolic ~/node_modules/.bin/lessc ~/bin/lessc
 $ lessc --version
 lessc 1.3.3 (LESS Compiler) [JavaScript]

安装工作正常。但无法运行您的test.less文件(未bootstrap安装)。总结一下:你为什么不使用npmnode你安装的是什么版本?

答案2

在@Deer Hunter 的大力帮助下,我很快就启动并运行了它。

$ sudo apt-get install npm
$ sudo npm install --global less
$ sudo ln -s /usr/local/lib/node_modules/less/bin/lessc /usr/local/bin

相关内容