首页 文章

SailsJS 0.11:ENOENT:没有这样的文件或目录,stat '…/node_modules/.bin/cdl'

提问于
浏览
11

这个 SailsJS 应用程序可以在我的办公室机器上运行但不在本地,我想知道为什么?在本地我运行linux . 在办公室Mac . 我在当地得到

错误:ENOENT:没有这样的文件或目录,在Object.fs.statSync(fs.js:849:18)处出现错误(本机)的stat'/home/jiewmeng/Dropbox/meclub/node_modules/.bin/cdl' /home/jiewmeng/Dropbox/meclub/node_modules/include-all/index.js:44:12位于requireAll的Array.forEach(native)(/home/jiewmeng/Dropbox/meclub/node_modules/include-all/index.js :40:9)在/home/jiewmeng/Dropbox/meclub/node_modules/include-all/index.js:50:23在requireAll上的Array.forEach(native)(/ home / jiewmeng / Dropbox / meclub / node_modules / include) -all / index.js:40:9)在function.module.exports的buildDictionary(/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/sails-build-dictionary/index.js:68:14) . Array.async.auto.nodeModulesFolder(/ home / jiewmeng / Dropbox / meclub / node_modules)中的可选(/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/sails-build-dictionary/index.js:160:9) /sails/lib/hooks/moduleloader/index.js:379:27)/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:484 :38.在_each(/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:46:13)的Object.async.auto(/ home / jiewmeng / Dropbox / meclub / node_modules /在钩子上的Hook.loadUserHooks(/home/jiewmeng/Dropbox/meclub/node_modules/sails/lib/hooks/moduleloader/index.js:363:13)中的sails / node_modules / async / lib / async.js:455:9) .bound [as loadUserHooks](/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/lodash/dist/lodash.js:729:21)在Hook.initialize(/ home / jiewmeng / Dropbox / meclub / node_modules / sails / lib / hooks / userhooks / index.js:29:18)在Hook.bound [as initialize](/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/lodash/dist/lodash.js:729: 21)在/home/jiewmeng/Dropbox/meclub/node_modules/sails/lib/hooks/index.js:75:14 athome/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js :451:17 athome/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:441:17 atee(/ home / jiewmeng / Dropbox / meclub / node_modules / sails / node _modules / async / lib / async.js:46:13)在ImmediateImmediate [as]的Immediate.taskComplete(/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:440:13) _immediateCallback](timers.js:374:17)

我正在使用 Sails 0.11 . 服务器实际上可以从 Sails 0.12 开始,但是有一些重大变化,因此我暂时停留在 0.11 . 我正在使用 Node 4 .

4 回答

  • 2

    我认为你正在使用 dropbox 将办公室笔记本电脑与你的机器同步,因为有些文件被添加到你的项目中,这不会在一个操作系统中引起问题,但可能会在其他操作系统中产生问题 .

    因此,我建议你应该遵循 standard practices to clone 项目

    • 使用git或bitbucket克隆项目 .

    • 安装依赖项=> npm install

    不要将dropbox用于项目同步 . 使用版本控制系统克隆/拉取代码,并安装所有依赖项

    因为node-gyp针对OS编译Node.js的本机附加模块

    并希望在此之后它应该工作正常 .

    如果您不想使用VCS,则可以按照以下步骤操作:

    # cd /home/jiewmeng/Dropbox/meclub
     # sudo rm -rf node_modules
     # rm -rf ~/.npm
     # npm cache clear
     # npm install
    

    这就是你需要做的 .

  • 5

    您不必删除整个node_modules目录 . 只需运行 npm rebuild ,如果模块与您当前的架构不匹配,它将重建模块 .

  • 5

    如果要转移到新机器,则需要重建 node_modules . 你可以这样做:

    cd /home/jiewmeng/Dropbox/meclub
    rm -rf node_modules
    npm install
    

    这是必需的原因是 .bin 文件夹已满symlinks . 这可能会导致Dropbox出现问题 . 此外, .bin 文件夹中的资源有时是本机编译的 . 无需重新编译即可从Ubuntu迁移到Mac OSX,这对于许多组件来说都是运行时的问题 .

    与VCS一样,我建议您根本不同步 node_modules 文件夹 . 这不应该在机器之间共享 . 您可以在每台计算机上使用NPM管理这些依赖项 .

  • 7
    • 确保使用 sails lift 或使用的任何内容从 correct directory 运行Sails

    • 执行 npm install 以确保安装了所有模块

    • 手动检查package.json中的所有模块是否在node_modules文件夹中可用

    • 确保两个节点的版本相同(它即使不是,也不应该是一个问题 - 在大多数情况下)

    • 尝试在最坏的情况下重新安装风帆和节点 .

相关问题