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
。
答案 0 :(得分:7)
我认为您正在使用 dropbox 将办公室笔记本电脑与您的计算机同步, 由于某些文件被添加到您的项目中,这不会在一个操作系统中引起问题,但可能会在其他操作系统中产生问题。
因此,我建议你应该按照标准做法来克隆项目
不要将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)
sails lift
或您使用的任何内容从正确的目录运行Sails npm install
以确保已安装所有模块