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

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

错误:ENOENT:没有这样的文件或目录,stat'/home/jiewmeng/Dropbox/meclub/node_modules/.bin/cdl'错误(本机)在Object.fs.statSync(fs.js:849:18)at / home / jiewmeng / Dropbox / meclub / node_modules / include-all / index.js:44:12 at Array.forEach(native)at requireAll(/home/jiewmeng/Dropbox/meclub/node_modules/include-all/index.js: 40/9)at /home/jiewmeng/Dropbox/meclub/node_modules/include-all/index.js:50:23 Array.forEach(native)at requireAll(/ home / jiewmeng / Dropbox / meclub / node_modules / include- all / index.js:40:9)at buildDictionary(/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/sails-build-dictionary/index.js:68:14)at Function.module.exports.optional (/ home / jiewmeng / Dropbox / meclub / node_modules /下载/ sails / lib / hooks / moduleloader / index.js:379:27)at /home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:484:3 8在_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 / sails / Hode.loadUserHooks(/home/jiewmeng/Dropbox/meclub/node_modules/sails/lib/hooks/moduleloader/index.js:363:13)在Hook上的/node_modules/async/lib/async.js:455:9)。在Hook.initialize(/ home / jiewmeng / Dropbox / meclub / node_modules / sails)上绑定[loadUserHooks](/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/lodash/dist/lodash.js:729:21) /lib/hooks/userhooks/index.js:29:18)在Hook.bound [初始化](/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/lodash/dist/lodash.js:729:21 )at /home/jiewmeng/Dropbox/meclub/node_modules/sails/lib/hooks/index.js:75:14 at /home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js: 451:17 at /home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:441:17 at _each(/ home / jiewmeng / Dropbox / meclub / node_modules / sails / node_m odules / 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

我认为你使用的Dropbox与办公室笔记本电脑同步您的机器,由于其中一些文件被添加到您的项目,这不会导致一个操作系统的问题,但可以在其他创build问题。

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

  1. 使用git或bitbucket来克隆项目。
  2. 安装依赖项=> npm install

不要使用Dropbox进行项目同步。 使用版本控制系统克隆/拉取代码,并安装所有依赖项

因为node-gyp针对操作系统编译Node.js的本地附加模块

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

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

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

这就是你需要做的。

您不必删除整个node_modules目录。 只要运行npm rebuild ,它将重build模块,如果他们不符合你当前的架构。

如果您正在转移到新机器,则需要重新node_modules 。 你可以这样做:

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

这是必需的原因是.bin文件夹充满符号链接 。 这可能会导致与Dropbox的问题。 另外, .bin文件夹中的资源有时也是本地编译的。 从Ubuntu迁移到Mac OSX而不进行重新编译,在许多组件的运行时将是一个问题。

就像使用VCS一样,我build议您不要同步node_modules文件夹。 这不应该在机器之间共享。 您可以在每台计算机上使用NPM来pipe理这些依赖关系。

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