我正在尝试构建一个简单的cakefile来执行我正在处理的节点项目的构建任务。在this gist from github之后,我设法将以下基本代码放在一起:
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 :(得分:1)
我遇到了这个问题并发现我运行了一个非常旧版本的节点(0.6) - 你的需求是安静地失败,fs必须是一个不存在的新包。
最后我安装了n包,升级节点,一切都很好
How can I update Node.js and npm to the next versions?
(在我使用的3个命令的答案的右下角)
请注意,我还运行Z shell,并且需要告诉shell在找到更新版本的节点之前使用rehash命令重新执行其可执行文件列表。