SailsJS 0.11: ENOENT: нет такого файла или каталога, stat '.../node_modules/. Bin/cdl'

Это приложение SailsJS, которое работает на моей офисной машине, но не локально, интересно, почему? Локально я запускаю linux. В офисе Mac. Локально я получаю

Ошибка: ENOENT: нет такого файла или каталога, stat '/home/jiewmeng/Dropbox/meclub/ node_modules/.bin/cdl' при ошибке (native) в Object.fs.statSync(fs.js: 849: 18) в /home/jiewmeng/Dropbox/meclub/ node_modules/include-all/index.js:44:12 в Array.forEach(native) at requireAll (/home/jiewmeng/Dropbox/meclub/node_modules/include-all/index.js:40:9) в /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) в 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 [как 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) на processImmediate [as _immediateCallback] (timers.js: 374: 17)

Я использую Sails 0.11. На самом деле сервер может начинаться с Sails 0.12, но некоторые из них меняются, поэтому я застрял с 0.11. Я использую Node 4.

Ответ 1

Я думаю, что вы используете dropbox для синхронизации офисного ноутбука с вашей машиной, из-за чего некоторые файлы добавляются в ваш проект, что не вызовет проблемы в одной ОС, но может создать проблему в другом.

Таким образом, я предлагаю вам следовать стандартным методам клонирования проекта

  • Используйте git или bitbucket для клонирования проекта.
  • установить зависимости = > 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

Это все, что вам нужно сделать.

Ответ 2

Вам нужно перестроить ваш node_modules, если вы перейдете на новую машину. Вы можете сделать это следующим образом:

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

Причина, по которой это требуется, заключается в том, что папка .bin полна символических ссылок. Вероятно, это вызовет проблемы с Dropbox. Кроме того, ресурсы в папке .bin иногда компилируются изначально. Переход от Ubuntu к Mac OSX без повторной компиляции будет проблемой во время выполнения для многих компонентов.

Как и в случае с VCS, я бы рекомендовал вам не синхронизировать папку node_modules. Это не должно делиться между машинами. Вы можете управлять этими зависимостями, используя NPM на каждом компьютере.

Ответ 3

Вам не нужно удалять весь каталог node_modules. Просто запустите npm rebuild и он будет перестраивать модули, если они не соответствуют вашей текущей архитектуре.

Ответ 4

  • Убедитесь, что вы используете Sails из правильного каталога, используя sails lift или все, что вы используете
  • Сделайте npm install, чтобы убедиться, что все модули установлены.
  • Вручную проверьте, доступны ли все модули в пакете .json в папке node_modules
  • Убедитесь, что версии Node одинаковы для обоих (это не должно быть проблемой, даже если нет - в большинстве случаев)
  • Попробуйте переустановить паруса и Node в худшем случае.