2015-05-04 3 views
1

Я создал Node.js приложения с зависимостями во время выполнения scoped packages в моем package.json:Как указать версию npm при развертывании приложений nodejs в bluemix?

"dependencies": { 
    "@shawnzhu/mybot" : "latest", 
    ... 
}, 
"engines": { 
    "npm": ">2.0.0", 
    "node": "0.10.38" 
}, 

У меня также есть обычай .npmrc, который указует объем @shawnzhu к моему частному реестру НОГО.

В настоящее время он работает при развертывании в heroku, где он обновляет номер npm до версии v2.7.x. Тем не менее, cf push на bluemix терпит неудачу с выходной консолью с указанием:

registry "@shawnzhu/mybot" not found. 

Просмотрев весь консольный вывод, я понял, он использует npm v1.4.28, который не поддерживают контекстные пакеты.

Как я могу получить npm v2.0.0 + в приложении node.js в bluemix?

ответ

5

До 15 июня 2015 г.: Это было невозможно с использованием стандартного Node.js buildpack на Bluemix. На данный момент, вы можете использовать сообщество с открытым исходным кодом Node.js buildpack:

сравни толчок mynodeapp -b

Вы указали версию НПМ в вашем package.json правильно, поэтому он должен работать для сообщество buildpack.

После 15 июня 2015 г.: новейшая версия IBM Node.js Buildpack теперь доступна на Bluemix! Вы можете увидеть все изменения в https://developer.ibm.com/bluemix/2015/06/15/bluemix-node-js-buildpack-update/

Это buildpack поставляется с возможностью указания версии НПМ, включив запись «НПМ» в вашем package.json, например, так:

"engines": { 
    "npm": "xxxxxxx" 
}, 

+0

Да, вот почему я сказал, что это работает на герою через heroku buildpack. – shawnzhu

1

I также был в состоянии получить эту работу, используя узел 0.12.2, со следующими изменениями:

в package.json:

"engines": { 
    "npm": ">2.0.0", 
    "node": ">=0.12.0" 
    }, 
+0

Да, это работает для меня, чтобы получить пакеты с областью на bluemix! Благодаря! – shawnzhu

1

Начиная с новейшего компоновщика компоновки Bluemix node.js по умолчанию (c.Jun 4, 2015), вы можете указать версию npm> 2.0.0, которая устанавливает версию npm> 2.7, которая является требованием для поддержки и импортированные пакеты npm. Я тестировал это для пакета с общедоступной областью, и он работает и работает в Bluemix, используя стандартный node.js buildpack.

Если вы не хотите возвращать и использовать cf community buildpack, вы можете использовать свойство «engines.npm», и это должно запускать вас и работать даже в узле 0.10.x.

В package.json укажите:

"engines": { 
    "npm": ">2.0.0", 
    "node": "0.10.x" 
    } 

Я редактировал этот ответ для ясности. Большое спасибо @shawnzhu за комментарии. Надеюсь это поможет.

+0

эта функция принадлежит узлу по умолчанию для Bluemix.js buildpack, я хочу знать, какое изменение по умолчанию nodejs buildpack приводит эту функцию вместо того, чтобы говорить «она работает сейчас». – shawnzhu

+0

@shawnzhu, я обновил свой ответ для ясности. Похоже, что функции встроенного пакета Bluemix node.js по умолчанию теперь поддерживают спецификацию «engines.npm»> 2.0, и теперь могут использоваться облачные пакеты npm. Я не уверен, что они изменили, но я добавил здесь свой ответ, b/c ответ от sai-vennam above, похоже, уже устарел. – novaedge

+0

он не работает сегодня, и @Sai Vennam упомянул, что текущая версия Node.js buildpack для версии на bluemix - v1.1-201-20150519-1759, которая еще не поддерживает эту функцию. повторите его ответ. и я буду смотреть на это – shawnzhu

Смежные вопросы