Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Coffeescript--监视开关不适用于节点0.4.7_Node.js_Heroku_Coffeescript - Fatal编程技术网

Node.js Coffeescript--监视开关不适用于节点0.4.7

Node.js Coffeescript--监视开关不适用于节点0.4.7,node.js,heroku,coffeescript,Node.js,Heroku,Coffeescript,coffeescript编译器的--watch指令不适用于node.js 0.4.7。如何修复 (在Heroku上部署当前需要节点0.4.7。)在Node.js 0.4.7中没有fs.watch方法。将command.js中第198行的watch函数替换为以下内容: watch = function(source, base) { return fs.stat(source, function(err, prevStats) { if (err) throw err; return fs

coffeescript编译器的--watch指令不适用于node.js 0.4.7。如何修复


(在Heroku上部署当前需要节点0.4.7。)

在Node.js 0.4.7中没有fs.watch方法。将command.js中第198行的watch函数替换为以下内容:

watch = function(source, base) {
return fs.stat(source, function(err, prevStats) {
  if (err) throw err;
  return fs.watchFile(source, function(curr, prev) {
    return fs.stat(source, function(err, stats) {
      if (err) throw err;
      if (stats.size === prevStats.size && stats.mtime.getTime() === prevStats.mtime.getTime()) {
        return;
      }
      prevStats = stats;
      return fs.readFile(source, function(err, code) {
        if (err) throw err;
        return compileScript(source, code.toString(), base);
      });
    });
  });
});
};

node.js 0.4.7中没有fs.watch方法。将command.js中第198行的watch函数替换为以下内容:

watch = function(source, base) {
return fs.stat(source, function(err, prevStats) {
  if (err) throw err;
  return fs.watchFile(source, function(curr, prev) {
    return fs.stat(source, function(err, stats) {
      if (err) throw err;
      if (stats.size === prevStats.size && stats.mtime.getTime() === prevStats.mtime.getTime()) {
        return;
      }
      prevStats = stats;
      return fs.readFile(source, function(err, code) {
        if (err) throw err;
        return compileScript(source, code.toString(), base);
      });
    });
  });
});
};

如果无法升级到节点0.6,请尝试。它是一个单一用途的命令行实用程序,它完成了CoffeeScript 1.1.3之前的
coffee-cw
功能。此外,它还有一些额外功能,比如编译失败时发出咆哮通知。

如果无法升级到节点0.6,请尝试。它是一个单一用途的命令行实用程序,它完成了CoffeeScript 1.1.3之前的
coffee-cw
功能。另外,它还有一些额外的功能,比如编译失败时发出咆哮通知。

这是我在体验过coffeescript-w选项不起作用后编写的一个watchscript。它查找并监视.coffee、.less、.jade文件的更改,并触发相应的编译器进行响应。生成彩色输出,以便在编译失败时轻松检测

/*
* Tested on node 0.6, Ubuntu
*/
#!/usr/bin/node

COLOR_GREEN="\033[01;32m"
COLOR_RED="\033[01;31m"
COLOR_YELLOW="\033[01;33m"
COLOR_BLUE="\033[01;34m"
COLOR_NORMAL="\033[00m"

var fs = require('fs');

var coffeescript, jade, less;
try {
  coffeescript = require('/usr/lib/node_modules/coffee-script'); // after npm -g install coffee-script
} catch(e) {
  console.log(COLOR_RED,String(e),COLOR_NORMAL);
}

try {
  jade = require('/usr/lib/node_modules/jade'); // after npm -g install jade
} catch(e) {
  console.log(COLOR_RED,String(e),COLOR_NORMAL);
}

try {
  less = require('/usr/lib/node_modules/less'); // after npm -g install less
} catch(e) {
  console.log(COLOR_RED,String(e),COLOR_NORMAL);
}

console.log(
  'Watch Support',
  (coffeescript ? COLOR_GREEN : COLOR_RED),' coffeescript ',COLOR_NORMAL,
  (jade ? COLOR_GREEN : COLOR_RED),' jade ',COLOR_NORMAL,
  (less ? COLOR_GREEN : COLOR_RED),' less ',COLOR_NORMAL
);

var compile = function (fname) {
  var source = fs.readFileSync(fname).toString();
  try {
    if(/\.jade$/.test(fname)) {

      var html = jade.compile(source,{pretty:true})();
      var htmlfname = fname.replace(/\.jade$/,'.html');
      fs.writeFileSync(htmlfname, html);
      console.log(COLOR_GREEN,'Success ',fname,new Date(),COLOR_NORMAL)

    } else if(/\.coffee$/.test(fname)) {

      var js = coffeescript.compile(source);
      var jsfname = fname.replace(/\.coffee$/,'.js');
      fs.writeFileSync(jsfname, js);
      console.log(COLOR_GREEN,'Success ',fname,new Date(),COLOR_NORMAL)

    } else if(/\.less$/.test(fname)) {

      var lessparser = new(less.Parser);
      var cssfname = fname.replace(/\.less$/,'.css');
      lessparser.parse(source, function (e, tree) {
        if(e) {
          console.log(COLOR_RED,'Failed ',fname,String(e),COLOR_NORMAL);
        } else {
          fs.writeFileSync(cssfname, tree.toCSS());
          console.log(COLOR_GREEN,'Success ',fname,new Date(),COLOR_NORMAL)
        }
      });

    }
  } catch(e) {
    console.log(COLOR_RED,'Failed ',fname,String(e),COLOR_NORMAL)
  }
}

var walk = function(dir, done) {
  var results = [];
  fs.readdir(dir, function(err, list) {
    if (err) return done(err);
    var pending = list.length;
    if (!pending) return done(null, results);
    list.forEach(function(file) {
      file = dir + '/' + file;
      fs.stat(file, function(err, stat) {
        if (stat && stat.isDirectory()) {
          walk(file, function(err, res) {
            results = results.concat(res);
            if (!--pending) done(null, results);
          });
        } else {
          results.push(file);
          if (!--pending) done(null, results);
        }
      });
    });
  });
};

function main() {
  if(process.argv.length > 2) {
    dirName = process.argv[2];
  } else {
    dirName = '.';
  }

  stats = fs.statSync(dirName);

  if(stats.isDirectory()) {

    walk(dirName,function (err, files) {
      var watching = 0;
      files.forEach(function (fname) {
        if(/\.coffee$|\.less$|\.jade$/.test(fname)) {
          fs.watchFile(fname,{persistent:true,interval:500},
            function (cur,prev) {
              if(cur.mtime.getTime() != prev.mtime.getTime()) {
                compile(fname);
              }
            }
          );
          watching++;
        }
      }); 
      if(watching) {
        console.log('Watching '+watching+' file(s) in '+
          COLOR_YELLOW+dirName+COLOR_NORMAL);
      } else {
        console.log('No coffee/jade/less files found to watch');
      }
    });
  } else {
    // It's a file
    var fname = dirName;
    if(/\.coffee$|\.less$|\.jade$/.test(fname)) {
      fs.watchFile(fname,{persistent:true,interval:500},
        function (cur,prev) {
          if(cur.mtime.getTime() != prev.mtime.getTime()) {
            compile(fname);
          }
        }
      );
      console.log('Watching '+COLOR_YELLOW+fname+COLOR_NORMAL);
    } else {
      console.log('No coffee/jade/less files found to watch');
    }
  }
}

main();

如果你喜欢要点:

这是我在体验过coffeescript之后写的一个watchscript-w选项不起作用。它查找并监视.coffee、.less、.jade文件的更改,并触发相应的编译器进行响应。生成彩色输出,以便在编译失败时轻松检测

/*
* Tested on node 0.6, Ubuntu
*/
#!/usr/bin/node

COLOR_GREEN="\033[01;32m"
COLOR_RED="\033[01;31m"
COLOR_YELLOW="\033[01;33m"
COLOR_BLUE="\033[01;34m"
COLOR_NORMAL="\033[00m"

var fs = require('fs');

var coffeescript, jade, less;
try {
  coffeescript = require('/usr/lib/node_modules/coffee-script'); // after npm -g install coffee-script
} catch(e) {
  console.log(COLOR_RED,String(e),COLOR_NORMAL);
}

try {
  jade = require('/usr/lib/node_modules/jade'); // after npm -g install jade
} catch(e) {
  console.log(COLOR_RED,String(e),COLOR_NORMAL);
}

try {
  less = require('/usr/lib/node_modules/less'); // after npm -g install less
} catch(e) {
  console.log(COLOR_RED,String(e),COLOR_NORMAL);
}

console.log(
  'Watch Support',
  (coffeescript ? COLOR_GREEN : COLOR_RED),' coffeescript ',COLOR_NORMAL,
  (jade ? COLOR_GREEN : COLOR_RED),' jade ',COLOR_NORMAL,
  (less ? COLOR_GREEN : COLOR_RED),' less ',COLOR_NORMAL
);

var compile = function (fname) {
  var source = fs.readFileSync(fname).toString();
  try {
    if(/\.jade$/.test(fname)) {

      var html = jade.compile(source,{pretty:true})();
      var htmlfname = fname.replace(/\.jade$/,'.html');
      fs.writeFileSync(htmlfname, html);
      console.log(COLOR_GREEN,'Success ',fname,new Date(),COLOR_NORMAL)

    } else if(/\.coffee$/.test(fname)) {

      var js = coffeescript.compile(source);
      var jsfname = fname.replace(/\.coffee$/,'.js');
      fs.writeFileSync(jsfname, js);
      console.log(COLOR_GREEN,'Success ',fname,new Date(),COLOR_NORMAL)

    } else if(/\.less$/.test(fname)) {

      var lessparser = new(less.Parser);
      var cssfname = fname.replace(/\.less$/,'.css');
      lessparser.parse(source, function (e, tree) {
        if(e) {
          console.log(COLOR_RED,'Failed ',fname,String(e),COLOR_NORMAL);
        } else {
          fs.writeFileSync(cssfname, tree.toCSS());
          console.log(COLOR_GREEN,'Success ',fname,new Date(),COLOR_NORMAL)
        }
      });

    }
  } catch(e) {
    console.log(COLOR_RED,'Failed ',fname,String(e),COLOR_NORMAL)
  }
}

var walk = function(dir, done) {
  var results = [];
  fs.readdir(dir, function(err, list) {
    if (err) return done(err);
    var pending = list.length;
    if (!pending) return done(null, results);
    list.forEach(function(file) {
      file = dir + '/' + file;
      fs.stat(file, function(err, stat) {
        if (stat && stat.isDirectory()) {
          walk(file, function(err, res) {
            results = results.concat(res);
            if (!--pending) done(null, results);
          });
        } else {
          results.push(file);
          if (!--pending) done(null, results);
        }
      });
    });
  });
};

function main() {
  if(process.argv.length > 2) {
    dirName = process.argv[2];
  } else {
    dirName = '.';
  }

  stats = fs.statSync(dirName);

  if(stats.isDirectory()) {

    walk(dirName,function (err, files) {
      var watching = 0;
      files.forEach(function (fname) {
        if(/\.coffee$|\.less$|\.jade$/.test(fname)) {
          fs.watchFile(fname,{persistent:true,interval:500},
            function (cur,prev) {
              if(cur.mtime.getTime() != prev.mtime.getTime()) {
                compile(fname);
              }
            }
          );
          watching++;
        }
      }); 
      if(watching) {
        console.log('Watching '+watching+' file(s) in '+
          COLOR_YELLOW+dirName+COLOR_NORMAL);
      } else {
        console.log('No coffee/jade/less files found to watch');
      }
    });
  } else {
    // It's a file
    var fname = dirName;
    if(/\.coffee$|\.less$|\.jade$/.test(fname)) {
      fs.watchFile(fname,{persistent:true,interval:500},
        function (cur,prev) {
          if(cur.mtime.getTime() != prev.mtime.getTime()) {
            compile(fname);
          }
        }
      );
      console.log('Watching '+COLOR_YELLOW+fname+COLOR_NORMAL);
    } else {
      console.log('No coffee/jade/less files found to watch');
    }
  }
}

main();

如果您更喜欢gist:

我很好奇:为什么您要在Heroku上运行
咖啡-观看
,而不是在您的开发机器上?Trevor-我没有使用咖啡-观看Heroku。我在本地使用节点0.4.7。我很好奇:你为什么在Heroku上运行
coffee--看
,而不是在你的开发机器上?Trevor-我没有使用coffee--看Heroku。我在本地使用节点0.4.7。有一个开放的拉取请求来支持这两个:更新:上面的拉取请求已经关闭
coffee
将不支持
fs.watchFile
。有一个打开的拉取请求同时支持这两个:更新:上述拉取请求已关闭
coffee
不支持
fs.watchFile
。谢谢Trevor-Jitter看起来不错,我会试试看。不幸的是,这个名称与我开发的一个已建立的编程产品相冲突!我想知道你以前是否见过它:谢谢特雷弗-抖动看起来不错,我来试试。不幸的是,这个名称与我开发的一个已建立的编程产品相冲突!我想知道你以前是否看过: