2013-04-03 2 views
-1

Я пытаюсь создать простой файл cakefile для выполнения задач сборки для проекта узла, над которым я работаю. После this gist from github, я сумел бросить следующий базовый код вместе:fs undefined in cakefile

CoffeeScript = require 'coffee-script' 
{exec} = require 'child_process' 
fs = require 'fs' 
web_build_path = 'bin/web' 


task 'build', 'build server-side project code and output to bin dir', -> 
    makeUnrevisionedDirs() 

    #snip other methods... 

makeUnrevisionedDirs =() -> 
    console.log(": adding unrevisioned directories...") 
    if not fs.existsSync(web_build_path) 
     console.log(":: adding #{web_build_path} dir") 
     fs.mkdirSync(web_build_path) 
    if not fs.existsSync('logs') 
     console.log(":: adding logs dir") 
     fs.mkdirSync('logs') 
    if not fs.existsSync('bin') 
     console.log(":: adding bin dir") 
     fs.mkdirSync('bin') 

И получить следующее сообщение об ошибке, как если бы fs никогда не требовалось:

TypeError: Cannot call method 'existsSync' of undefined 
    at makeUnrevisionedDirs (C:\fms\Cakefile:25:9, <js>:22:13) 
    at Object.makeUnrevisionedDirs [as action] (C:\fms\Cakefile:7:2, <js>:11:5) 
    at helpers.extend.invoke (C:\Users\Mike\AppData\Roaming\npm\node_modules\coffe 
e-script\lib\coffee-script\cake.js:45:26) 
    at Object.exports.run (C:\Users\Mike\AppData\Roaming\npm\node_modules\coffee-s 
cript\lib\coffee-script\cake.js:72:21) 
    at Object.<anonymous> (C:\Users\Mike\AppData\Roaming\npm\node_modules\coffee-s 
cript\bin\cake:7:38) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 
    at node.js:903:3 

fs почему не определено здесь?

+0

Удача в этом? Я получаю подобное поведение. По какой-то причине fs не определена. У меня есть var fs = require ('fs'); а затем попробуйте console.log (fs), и его просто нет. Пробовал объявлять без var или даже явно, как global.fs = require ('fs'), и все же он не определен. –

ответ

1

У меня была эта проблема, и я обнаружил, что у меня работает действительно старая версия узла (0.6) - ваш запрос терпит неудачу, fs должен быть более новым пакетом, которого не было.

В конце концов я установил русскую пакет, модернизированный узел и все было хорошо

How can I update Node.js and npm to the next versions?

(идти прямо на дно ответа на 3-х команд, которые я использовал)

Заметим, что Я также запускал Z-оболочку и требовал, чтобы оболочка перефразировала свой список исполняемых файлов командой rehash, прежде чем обнаружила новую версию узла.