少 css 和 node js 的麻烦

Geo*_*rge 3 nodejs

当我尝试在我的 Ubuntu 13.10 机器下安装 less css 编译器时,我收到以下消息并且 lescss 不起作用。我可以通过什么方式解决问题?我执行:

sudo npm install -g less
Run Code Online (Sandbox Code Playgroud)

在此之后,我得到带有 OK 消息的列表:

npm http 304 https://registry.npmjs.org/cryptiles
npm http 304 https://registry.npmjs.org/ctype/0.5.2
npm http 304 https://registry.npmjs.org/combined-stream
npm http GET https://registry.npmjs.org/delayed-stream/0.0.5
npm http 304 https://registry.npmjs.org/sntp
npm http 304 https://registry.npmjs.org/boom
npm http 304 https://registry.npmjs.org/delayed-stream/0.0.5
Run Code Online (Sandbox Code Playgroud)

并列出以下内容:

/usr/local/bin/lessc -> /usr/local/lib/node_modules/less/bin/lessc
less@1.7.0 /usr/local/lib/node_modules/less
??? mime@1.2.11
??? mkdirp@0.3.5
??? source-map@0.1.33 (amdefine@0.1.0)
??? clean-css@2.1.8 (commander@2.1.0)
??? request@2.34.0 (json-stringify-safe@5.0.0, forever-agent@0.5.2, aws-sign2@0.5.0, qs@0.6.6, tunnel-agent@0.3.0, oauth-sign@0.3.0, node-uuid@1.4.1, tough-cookie@0.12.1, http-signature@0.10.0, hawk@1.0.0, form-data@0.1.2)
Run Code Online (Sandbox Code Playgroud)

在此之后,当我尝试以下命令时:

echo "@foo: 25px; #foobar{font-size: @foo};" > style.less
sudo lessc ./style.less ./style.css
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

/usr/bin/env: node: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我执行后

ln -s /usr/bin/node /usr/local/bin/nodejs
Run Code Online (Sandbox Code Playgroud)

并创建符号链接没有错误,但lessc 编译器无法正常工作。我已经创建了要测试的文件。它的内容是:

 cat style.less 
@color: #4D926F;

#header {
  color: @color;
}
h2 {
  color: @color;
}`
Run Code Online (Sandbox Code Playgroud)

并在尝试之后

lessc styles.less > styles.css
Run Code Online (Sandbox Code Playgroud)

已创建文件-styles.css 但该文件为空。我也尝试过我之前尝试过的命令 - 请参阅帖子的顶部。但它不起作用。我将非常感谢您的任何建议和建议。

此致。

sab*_*ton 7

sudo ln -s /usr/bin/nodejs /usr/bin/node
Run Code Online (Sandbox Code Playgroud)

我以另一种方式所做的似乎对我来说是一个损坏的符号链接。

这应该证明一切正常:

file $(which node)
/usr/bin/node: symbolic link to `/usr/bin/nodejs'
Run Code Online (Sandbox Code Playgroud)

(注意它没有说损坏的符号链接)

不幸的是,我相信 terdon 的答案实际上会阻止正确答案的工作

# Don't do this:
sudo apt-get install node
file $(which node)
/usr/sbin/node: symbolic link to `ax25-node' 

apt-cache show node|grep Description-en
Description-en: Amateur Packet Radio Node program (transitional package)
Run Code Online (Sandbox Code Playgroud)

(你想要 nodejs 而不是业余分组无线电,我想:))

卸载该节点包应该可以解决该问题

-有用信息结束(除非你喜欢业余无线电)-


编辑:所以整个问题是 Debian 中已经有一个名为“node”的包,Debian 对 nodejs 感到不安,因为它没有检查名为 node 的命令是否已经被另一个包(业余无线电节目)采用。所以Debian有效地破坏了节点程序,因为像less这样的包会寻找一个名为“node”的命令。

如果您碰巧使用了 ham radio 包,那么您可以将lessc文件中的 shebang 行更改#!/usr/bin/env nodejs为 terdon 在下面的评论中所说的,而不是制作符号链接。

请注意,如果您使用其他 npm 包,您可能需要更改很多 shebang 行,因此只有在您真正使用 ham radio 时才这样做:)

更新:好的,所以我多读了 yorodm 的链接,debian 已将 Ham 无线电包更改为https://packages.debian.org/sid/ax25-node Trusty 实际上使用了这个!

因此,如果您使用 ham radio 只需删除/usr/bin/node它是一个符号链接,以/usr/bin/ax25-node将其替换为该答案顶部的node符号链接,/usr/bin/nodejs如果您只安装 ham radio,因为它覆盖了,您将需要再次执行此操作。

现在,如果您想要业余无线电,请使用“ax25-node”作为命令:D

底线很容易使用 nodejs 的“节点”来对抗政治。

更新记录/档案

这篇文章主要针对那些sudo apt-get install nodejs在 Ubuntu 14.04 (trusty Tahr) 中安装了官方软件包的人,该软件包通过将命令“node”更改为“nodejs”来删除兼容性。

当时,实际更好的解决方案是在启动板上安装 Chris Lea 的 ppa,但现在他又将其移到了不同​​的位置,这是 Chris Lea 开箱即用的最佳解决方案(不用担心符号链接):

curl -sL https://deb.nodesource.com/setup | sudo bash -
Run Code Online (Sandbox Code Playgroud)

(现在为 Debian 和 Ubuntu 设计)

参考资料:https : //github.com/joyent/node/wiki/installing-node.js-via-package-manager https://nodesource.com/blog/chris-lea-joins-forces-with-nodesource

这就是 Joyent 在该网站上链接的内容,这就是我正在使用的内容:D