Проблема с развертыванием nodejs на CF/BlueMix

Когда я пытаюсь развернуть следующий репозиторий в CF/BlueMix, я получаю ошибки для «devDependencies»:

Error: Cannot find module 'webpack' 

Если я добавлю веб-пакет в деп, я получаю сообщение об ошибке

Error: Cannot find module 'postcss-cssnext'

и продолжить для другого отдела разработчиков....

В какой части devDependencies развертывание не должно устанавливать только зависимость "prod"?

Это репозиторий: https://github.com/Hashnode/mern-starter.

Я запускаю сборку локально с помощью npm run bs и добавляю в manifest.yml следующее

---
applications:
- name: myapp
  buildpack: nodejs_buildpack
  memory: 512M
  command: npm run start:prod
  services:
    - mong

в чем может быть причина отказа от devdependencies?


person Community    schedule 01.01.2017    source источник


Ответы (1)


Вы отправляете в Bluemix папку node_modules в своем проекте? Если да, попробуйте удалить его полностью и повторно отправить.

Также,

Просто добавьте строку node_modules в ваш файл .cfignore, чтобы игнорировать каталог node_modules. Сборочный пакет запустит установку узла в контейнере Cloud Foundry. Также я бы порекомендовал вам выполнить cf delete, чтобы удалить его из кеша, а затем снова выполнить cf push.

Источник: см. комментарии к этому вопросу: не удается передать облачное приложение node.js в bluemix


Обновить

Я думаю, что воспроизвел проблему:

2017-01-01T23:12:14.45+0000 [App/0]      ERR Error: Cannot find module 'webpack'
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Function.Module._resolveFilename (module.js:339:15)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Function.Module._load (module.js:290:25)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Module.require (module.js:367:17)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at require (internal/module.js:16:19)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Object.defineProperty.value (/home/vcap/app/dist/server.bundle.js:280:19)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Object.<anonymous> (/home/vcap/app/dist/server.bundle.js:1930:17)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Object.defineProperty.value (/home/vcap/app/dist/server.bundle.js:2074:31)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at __webpack_require__ (/home/vcap/app/dist/server.bundle.js:20:30)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at /home/vcap/app/dist/server.bundle.js:40:18
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Object.<anonymous> (/home/vcap/app/dist/server.bundle.js:43:10)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Module._compile (module.js:413:34)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Object.Module._extensions..js (module.js:422:10)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Module.load (module.js:357:32)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Function.Module._load (module.js:314:12)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Module.require (module.js:367:17)

Проблема с импортом веб-пакета, похоже, связана с файлом dist/server.bundle.js, который для меня был сгенерирован командой npm run bs.

Папка dist загружается в Bluemix и, похоже, импортируется при запуске вашего приложения.

Можете ли вы исключить папку dist в .cfignore и создать ее, когда ваше приложение загружается с помощью cf push? Я не уверен, добавите ли вы несколько команд в manifest.yml, например.

command: npm <<your_new_build_command>> && npm run start:prod

Однако похоже, что все, что вы делаете в своей новой команде сборки (например, npm run bs:prod), получает производственные зависимости только при создании папки dist.

Если вы не можете запустить несколько команд из manifest.yml, вам может потребоваться изменить start:prod, чтобы он также выполнял этап сборки для производственной среды.

Обновление 2

Вы можете попросить пакет сборки узла не кэшировать модули и загружать их каждый раз, когда вы нажимаете, используя NODE_MODULES_CACHE: false, например.

applications:
- name: ...
  buildpack: nodejs_buildpack
  memory: 512M
  command: ...
  env:
     NODE_MODULES_CACHE: false
person Chris Snow    schedule 01.01.2017
comment
Нет, я уже поместил его в .cf ignore -> node_modules/ , есть ли возможность очистить кеш без удаления? - person ; 02.01.2017
comment
Однако я не уверен, что эти вопросы могут помочь stackoverflow.com/questions/31006154/ - person Chris Snow; 02.01.2017
comment
и что касается проблемы, которая пытается загрузить dev dep? любое направление идеи? Я застрял... Спасибо! - person ; 02.01.2017
comment
вы пытались установить флаг --production или NPM_CONFIG_PRODUCTION=true github.com/cloudfoundry/nodejs-buildpack/issues /16 - person Chris Snow; 02.01.2017
comment
Как я могу это сделать, пожалуйста, приведите пример? Пытаюсь в манифесте поставить еще и env: NODE_ENV: production не помогает... - person ; 02.01.2017
comment
У вас есть какой-нибудь экземпляр bluemix, может быть, вы можете клонировать репо и выполнить шаги, которые это займет 3-5 минут, может быть, у вас будет какое-то направление ... Спасибо за поддержку! - person ; 02.01.2017
comment
Привет, спасибо за усилия 1+, вы имеете в виду запуск npm run bs и npm run start:prod вместе? если да, то команды (в yaml) не могут получить два атрибута? (может быть, последовательность имеет значение), кстати, вы смогли запустить его? - person ; 02.01.2017
comment
Я обновил ответ с дополнительной информацией. Я думаю, вам нужна новая команда сборки, которая строит dist без devDependencies. - person Chris Snow; 02.01.2017
comment
в качестве обходного пути я поместил все зависимости разработчика в зависимость, но она все еще не работает, это должно решить проблему (как быстрое обходное решение)? - person ; 02.01.2017
comment
Удалось ли вам запустить его на своей машине? - person ; 02.01.2017