错误 find-up@4.1.0:引擎“node”与此模块不兼容。预期版本“>=8”。Ember js + Heroku 部署。

3
  • Ember-CLI:3.4.3
  • Node:6.9.5
  • Yarn:1.9.4

在将我的Ember项目部署到Heroku时,我遇到了以下错误日志。我们有find-up版本3.0.0,但在部署期间,它仍然尝试下载find-up@4.1.0。如果有人知道如何忽略下载最新版本的find-up或任何解决方案,请在此处发表评论,这将非常有帮助。谢谢。

error find-up@4.1.0: The engine "node" is incompatible with this module. Expected version ">=8".
error Found incompatible module
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
 !     Push rejected, failed to compile Ember CLI app.
 !     Push failed

这是我的Package.json文件

   {
  "name": "tabsys-client",
  "version": "2.13.1",
  "private": true,
  "description": "Web and mobile client for Activate Universal",
  "directories": {
    "doc": "doc",
    "test": "tests"
  },
  "scripts": {
    "build": "ember build",
    "lint:js": "eslint ./*.js app config lib server tests",
    "start": "ember serve",
    "test": "ember test",
    "postinstall": "node -e \"try { require('fs').symlinkSync(require('path').resolve('node_modules/@bower_components'), 'bower_components', 'junction') } catch (e) { }\""
  },
  "dependencies": {
    "@bower_components/FakeXMLHttpRequest": "trek/FakeXMLHttpRequest#^1.4.0",
    "@bower_components/Faker": "Marak/Faker.js#~3.1.0",
    "@bower_components/d3": "mbostock-bower/d3-bower#^4.11.0",
    "@bower_components/d3-tip": "Caged/d3-tip#^0.7.1",
    "@bower_components/dexie": "dfahlander/dexie.js#^2.0.0-beta.11",
    "@bower_components/dialog-polyfill": "GoogleChrome/dialog-polyfill#^0.4.7",
    "@bower_components/ember-qunit-notifications": "dockyard/ember-qunit-notifications#0.1.0",
    "@bower_components/highcharts-custom-events": "blacklabel/custom_events#2.1.4",
    "@bower_components/leaflet": "Leaflet/Leaflet#^1.0.0",
    "@bower_components/material-design-lite": "google/material-design-lite#^1.2.1",
    "@bower_components/pretender": "trek/pretender#~1.1.0",
    "@bower_components/qunit-notifications": "dockyard/qunit-notifications#~0.1.0",
    "@bower_components/route-recognizer": "tildeio/route-recognizer#~0.1.1",
    "@bower_components/sauce-material-design": "sauce-consultants/sauce-material-design#1.0.0rc8",
    "ember-cli": "^3.4.3",
    "object.values": "^1.0.4",
    "replace": "^1.1.1"
  },
  "devDependencies": {
    "broccoli-asset-rev": "^2.4.5",
    "broccoli-funnel": "2.0.1",
    "corber": "1.3.10",
    "ember-ajax": "^3.0.0",
    "ember-cli-app-version": "^3.0.0",
    "ember-cli-babel": "^7.1.2",
    "ember-cli-clock": "2.1.1",
    "ember-cli-dotenv": "^2.0.0",
    "ember-cli-eslint": "^4.2.1",
    "ember-cli-fastclick": "1.3.0",
    "ember-cli-favicon": "1.0.0-beta.4",
    "ember-cli-geo": "^4.0.0",
    "ember-cli-htmlbars": "^2.0.3",
    "ember-cli-htmlbars-inline-precompile": "^1.0.2",
    "ember-cli-inject-live-reload": "^1.8.2",
    "ember-cli-moment-shim": "3.3.1",
    "ember-cli-nouislider": "^0.14.1",
    "ember-cli-qunit": "^4.1.1",
    "ember-cli-release": "^1.0.0-beta.2",
    "ember-cli-sass": "7.1.3",
    "ember-cli-shims": "^1.2.0",
    "ember-cli-sri": "^2.1.0",
    "ember-cli-uglify": "^2.0.0",
    "ember-composability": "0.3.7",
    "ember-concurrency": "0.7.17",
    "ember-cordova-events": "0.1.0",
    "ember-cordova-platform": "^0.1.0",
    "ember-cordova-splash": "0.1.4",
    "ember-crumbly": "2.0.0-alpha.1",
    "ember-data": "~2.18.0",
    "ember-data-url-templates": "0.2.0",
    "ember-drag-drop": "^0.6.2",
    "ember-export-application-global": "^2.0.0",
    "ember-file-upload": "2.0.0-beta.24",
    "ember-highcharts": "0.5.4",
    "ember-i18n": "5.0.2",
    "ember-inflector": "2.0.1",
    "ember-leaflet": "3.0.9",
    "ember-load-initializers": "^1.0.0",
    "ember-local-storage": "^1.4.0",
    "ember-lodash": "^4.17.5",
    "ember-material-lite": "0.2.5",
    "ember-md5": "^1.2.0",
    "ember-modal-dialog": "^2.4.1",
    "ember-moment": "7.0.0-beta.3",
    "ember-new-computed": "1.0.3",
    "ember-pikaday": "2.2.2",
    "ember-power-select": "1.9.6",
    "ember-radio-button": "1.0.7",
    "ember-resolver": "^4.0.0",
    "ember-route-action-helper": "2.0.6",
    "ember-sauce-material-design": "sauce-consultants/ember-sauce-material-design.git#1.0.0rc18",
    "ember-sauce-toolkit": "sauce-consultants/ember-sauce-toolkit#0.1.5",
    "ember-select-box": "1.1.14",
    "ember-service-worker": "0.6.6",
    "ember-service-worker-asset-cache": "0.6.1",
    "ember-service-worker-index": "0.6.1",
    "ember-sortable": "1.9.3",
    "ember-source": "~2.18.0",
    "ember-tether": "^1.0.0-beta.0",
    "ember-truth-helpers": "2.0.0",
    "ember-web-app": "^2.0.0",
    "ember-welcome-page": "^3.0.0",
    "emberx-file-input": "^1.1.2",
    "eslint-plugin-ember": "^5.0.0",
    "highcharts": "^7.0.0",
    "liquid-fire": "0.27.3",
    "loader.js": "^4.5.0",
    "pikaday": "1.6.1",
    "smd-colors": "sauce-consultants/smd-colors.git#25e787d8a85af98c60ec3482e0534ea8aaab1208",
    "torii": "0.9.3"
  },
  "engines": {
    "node": "6.9.5",
    "yarn": "1.9.4"
  }
}

刚刚注意到你说,在开发环境中你有 find-up@3.0.0,但在部署时它尝试安装 find-up@4.1.0。这很奇怪,因为版本应该在 yarn.lock 中被锁定,并确保安装完全相同。你没有提交 yarn.lock 吗?或者你是否在部署时使用了 --no-lockfile 或其他可能导致此问题的标志运行了 yarn install - jelhan
5个回答

6

如果有人对如何忽略最新版本的find-up下载有任何想法

我在您的package.json中没有看到find-up。它是某个其他依赖关系的依赖关系吗?

无论如何,我建议在package.json中锁定所有依赖项的版本,以避免任何意外情况(这些意外情况通常是代价高昂的)。为此,您需要删除所有的^~。例如,"highcharts": "7.0.0",而不是"highcharts": "^7.0.0",。之后您需要运行yarn install以安装正确版本的依赖项并更新yarn.lock文件。

此外,如果上述解决方案无法帮助,则应使用yarn install --ignore-engines来忽略节点版本检查。


package.json 中记录直接依赖项的版本,当你有一个确保直接和间接依赖项安装版本一致的 yarn.lock 时,这样做的原因是什么? - jelhan
@jelhan 我更多地使用npm而不是yarn,但据我所知,两者都可以在“install”或“add”命令期间更新依赖项。 Yarn文档甚至建议使用--frozen-lockfile来防止锁定文件的更新。在package.json中锁定依赖项可以确保在日常工作中不会意外更新直接依赖项,这尤其重要,考虑到旧的ember版本(我在这里看到2.18)。有时,一个依赖项的小更新可能会花费几个小时来弄清楚为什么突然出现问题。 - Gennady Dogaev
@jelhan,另外,lockfile 适用于 yarn/npm。当需要时,它很大且难以跟踪更改。Package.json 适用于开发人员。它易读,并且更容易追踪谁更改了依赖版本以及为什么。 - Gennady Dogaev
@GennadyDogaev 是的,它不在package.json中,但它是Ember-CLI的依赖项。 - Shubham Singh
@GennadyDogaev 我更喜欢在CI中检查yarn.lock是否同步。在package.json中锁定直接依赖项会破坏yarn upgrade。实际上,这只会使依赖项的升级变得更加困难,因为您不再从语义化版本控制中获益。NPM是另一个话题,因为它长期以来一直没有很好地支持锁定依赖项... - jelhan
@jelhan,第三方库的小升级可能会轻易地破坏应用程序。正因为如此,这应该是困难的。 - Gennady Dogaev

1
在package.json文件的dependencies中,出现了"replace": "^1.1.1"的问题,所以我通过添加"replace": "1.1.1"来锁定replace版本,这样就可以正常运行了,谢谢你的回答。

0

Yarn 告诉你,npm 包 find-up 需要 Node 版本大于或等于 8。根据你的问题,你正在使用 Node 6。

Node 6 的生命周期已于2019年4月30日结束。即使是 Node 8,也自去年底以来不再受支持。

为解决此问题,您应升级到受支持的 Node 版本。Node 10 和 12 是活跃的 LTS 版本。Node 13 是当前最新版本。您可以在 https://github.com/nodejs/Release 上找到 Node 版本及其支持的概述。


0
请将您的Node版本升级到最新的稳定版Node.js,这对我有用。

0

请确保您的系统安装了更高版本的node.js。

在这种情况下,系统应安装node.js v8或更高版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接