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 в худшем случае.