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

时间:2016-04-21 15:06:32

标签: node.js sails.js

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

  

错误:ENOENT:没有这样的文件或目录,stat   '/home/jiewmeng/Dropbox/meclub/node_modules/.bin/cdl'出错   (native)at Object.fs.statSync(fs.js:849:18)at   /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)   在buildDictionary   (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/sails-build-dictionary/index.js:68:14)   在Function.module.exports.optional   (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/sails-build-dictionary/index.js:160:9)   在Array.async.auto.nodeModulesFolder   (/home/jiewmeng/Dropbox/meclub/node_modules/sails/lib/hooks/moduleloader/index.js:379:27)   在   /home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:484:38   在每一个   (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:46:13)   在Object.async.auto   (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:455:9)   在Hook.loadUserHooks   (/home/jiewmeng/Dropbox/meclub/node_modules/sails/lib/hooks/moduleloader/index.js:363:13)   在Hook.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 [作为初始化]   (/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   在   /home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:451:17   在   /home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:441:17   在每一个   (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:46:13)   在Immediate.taskComplete   (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:440:13)   at processImmediate [as _immediateCallback](timers.js:374:17)

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

4 个答案:

答案 0 :(得分:7)

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

因此,我建议你应该按照标准做法来克隆项目

  1. 使用git或bitbucket克隆项目。
  2. 安装依赖项=> npm install
  3. 不要将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
    

    这就是你需要做的一切。

答案 1 :(得分: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管理这些依赖项。

答案 2 :(得分:5)

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

答案 3 :(得分:2)

  1. 确保使用sails lift或您使用的任何内容从正确的目录运行Sails
  2. 执行npm install以确保已安装所有模块
  3. 手动检查package.json中的所有模块是否在node_modules文件夹中可用
  4. 确保节点的版本在两者中都相同(即使不是,也不应该是问题 - 在大多数情况下)
  5. 在最坏的情况下尝试重新安装风帆和节点。