ошибка установки npm для узла openshift.проект js


При развертывании узла OpenShift.проект на JS с зависимостей на browserify 4.0.0, я получаю сообщение об ошибке установка зависимостей в browserify. В частности:

...
remote: npm ERR! Error: No compatible version found: stream-browserify@'^1.0.0'
remote: npm ERR! Valid install targets:
remote: npm ERR! ["0.0.0","0.0.1","0.0.2","0.0.3","0.0.4","0.1.0","0.1.1","0.1.2","0.1.3","1.0.0"]
...

Учитывая, что версия stream-browserify является ^1.0.0 в соответствии с depdency browserify и что openshift предполагает, что 1.0.0 является допустимой целью установки, почему это не удается? Я видел эту ошибку в других случаях, когда самая высокая доступная версия openshift подходит для пакета careted.версия json.

Есть Ли Я непонимание того, что означает каре? Это ошибка OpenShift?

Мой пакет.json:

{
  "name": "SampleApp",
  "version": "1.0.0",
  "description": "do things online",
  "keywords": [
    "OpenShift",
    "Node.js",
    "application",
    "openshift"
  ],
  "author": {
    "name": "J",
    "email": "j@email.com",
    "url": ""
  },
  "homepage": "http://www.openshift.com/",
  "repository": {
    "type": "git",
    "url": "https://github.com/openshift/origin-server"
  },
  "engines": {
    "node": "0.x",
    "npm": "1.x"
  },
  "dependencies": {
    "body-parser": "1.x",
    "browserify": "4.0.0",
    "cookie-parser": "1.x",
    "cookie-session": "1.x",
    "express": "4.x",
    "fast-csv": "0.x",
    "multer": "0.0.5",
    "pg": "3.x",
    "sql": "0.x",
    "xlsx-extract": "0.0.4"
  },
  "devDependencies": {
  },
  "bundleDependencies": [],
  "private": true,
  "main": "server.js",
  "scripts": {
    "build-js": "browserify public/index.js -o public/index-bundle.js & browserify public/intake.js -o public/intake-bundle.js",
    "start": "npm run build-js && node server.js"
  }
}
1 3

1 ответ:

Такое поведение может быть вызвано различными версиями node и npm на вашем локальном компьютере и в среде openshift. Начните с фиксации атрибута "двигатели" в вашем пакете.json, что-то как ниже:

"engines": {
    "node": ">= 0.10",
    "npm": ">= 1.4"
  }

Если проблема все еще существует (на openshift), это связано с недоступностью требуемых версий nodejs/npm в среде openshift. Например, на сегодняшний день на моем локальном компьютере я могу использовать node версии 0.10.28 и npm версии 1.4.9, но на openshift nodejs по умолчанию я должен довольствоваться NodeJS версии 0.10.5 и npm версии 1.2.17, что является большим пробелом.

Таким образом, в этом случае самый простой способ обойти это использование "npm shrinkwrap", который замораживает вложенные версии зависимостей, которые должны быть использованы, следовательно, устраняя различное поведение версий npm, чтобы выяснить вложенную зависимость для установки.

Можете прочитать о shrinkwrap здесь: https://www.npmjs.org/doc/cli/npm-shrinkwrap.html

Итак, на вашем местном машина:

  1. запустите npm install и убедитесь, что все работает.
  2. fire npm shrinkwrap это создаст файл - " npm-shrinkwrap.json", с необходимой информацией о термоусадочной пленке. Добавьте, зафиксируйте и отправьте файл в репо openshift git.