/ usr / bin / env:node:没有这样的文件或目录,c ++

时间:2014-12-22 12:10:26

标签: c++ node.js less

我正在编写c ++上的一些函数,以便编译器减去css。

我安装了nodejsless。 我创建了一个较少的文件test.less

@color: red;
a{color:@color;}

当我在终端上运行命令时:

lessc test.less test.css

它创建了一个名为test.css的文件css,但是当我通过c ++运行此命令时,它会返回错误。请帮我。这是我的c ++函数:

std::string shell_exec( std::string cmd )
{
    std::string result = "";
    FILE* pipe = popen(cmd.c_str(), "r");
    if (pipe == NULL)
    {
        return result;
    }
   char buffer[128];
   while(!feof(pipe))
   {
        if(fgets(buffer, 128, pipe) != NULL)
        {
            result += buffer;
        }
    }
    pclose(pipe);
    return result;
} 

shell_exec("lessc test.less test.css");

我收到了一个错误:

/usr/bin/env: node: No such file or directory

/usr/bin/node已存在。

enter image description here  enter image description here enter image description here

================更新:已修复==================

谢谢@Bass Jobsen,@ Oright Races in Orbit

我修正了添加绝对路径到lessc和nodejs

shell_exec("/usr/bin/node /usr/bin/lessc test.less test.css");

1 个答案:

答案 0 :(得分:1)

来自:https://unix.stackexchange.com/a/29620

  

#!/ usr / bin / env python的优点是它会使用任何东西   python可执行文件首先出现在用户的$ PATH中。

因此,您应该将节点添加到运行脚本的用户的$PATH,请参阅:https://stackoverflow.com/a/13210246/1596547

请注意,我无法编译您的代码,但我可以使用以下代码:

int main()
{
std::string r =  shell_exec("lessc test.less test.css");
}

也可以使用using namespace stdstring代替std:string