【问题标题】:fs undefined in cakefile蛋糕文件中未定义的fs
【发布时间】:2013-06-21 18:23:11
【问题描述】:

我正在尝试构建一个简单的 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在这里未定义?

【问题讨论】:

  • 有什么运气吗?我也有类似的行为。出于某种原因, fs 未定义。我有 var fs = require('fs');然后尝试 console.log(fs) ,它只是不存在。尝试不使用 var 甚至明确声明为 global.fs = require('fs') ,但它仍然是未定义的。

标签: node.js coffeescript cakefile


【解决方案1】:

我遇到了这个问题,发现我正在运行一个非常旧版本的 node (0.6) - 你的 require 正在悄悄地失败,fs 必须是一个不存在的新包。

最后我安装了n包,升级了节点,一切都很好

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

(对于我使用的 3 个命令,直接跳到答案的底部)

请注意,我也在运行 Z shell,需要告诉 shell 在找到更新版本的节点之前使用 rehash 命令重新哈希其可执行文件列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-28
    • 2013-12-20
    • 2020-03-08
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多