Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Yarn fails on transitive optional dependencies that aren't compatible with the current OS #525

Closed
Daniel15 opened this issue Oct 6, 2016 · 7 comments
Labels
Milestone

Comments

@Daniel15
Copy link
Member

Daniel15 commented Oct 6, 2016

Yarn handles this correctly for direct dependencies (ie. dependencies in the package.json of the app you're running Yarn on), but not for transitive dependencies (ie. dependencies of those dependencies).

Example package.json to repro on Windows:

{
  "name": "hello",
  "version": "0.0.1",
  "dependencies": {
    "chokidar": "1.6.0"
  }
}

Example package.json to repro on Linux or Mac OS X:

{
  "name": "hello",
  "version": "0.0.1",
  "dependencies": {
    "@daniel15/win-test-2": "0.0.1"
  }
}

chokidar has an optional dependency on fsevent, which only works on Mac OS. Similarly, @daniel15/win-test-2 has an optional dependency on @daniel15/win-test which only works on Windows.

Output from npm install:

npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture: [email protected]

Output from yarn (Windows):

error [email protected]: The platform "win32" is incompatible with this module.
error Found incompatible module
    at MessageError (c:\src\yarn\lib\errors.js:9:1)
    at PackageCompatibility.check (c:\src\yarn\lib\package-compatibility.js:166:13)
    at PackageCompatibility.init (c:\src\yarn\lib\package-compatibility.js:173:12)
    at c:\src\yarn\lib\cli\commands\install.js:312:38
    at next (native)
    at step (c:\src\yarn\node_modules\babel-runtime\helpers\asyncToGenerator.js:17:30)
    at c:\src\yarn\node_modules\babel-runtime\helpers\asyncToGenerator.js:28:20

Output from Yarn (Debian Linux):

error @daniel15/[email protected]: The platform "linux" is incompatible with this module.
error Found incompatible module
    at MessageError (/home/daniel/src/yarn/lib-legacy/errors.js:9:1)
    at PackageCompatibility.check (/home/daniel/src/yarn/lib-legacy/package-compatibility.js:170:13)
    at PackageCompatibility.init (/home/daniel/src/yarn/lib-legacy/package-compatibility.js:177:12)
    at /home/daniel/src/yarn/lib-legacy/cli/commands/install.js:326:38
    at next (native)
    at step (/home/daniel/src/yarn/node_modules/babel-runtime/helpers/asyncToGenerator.js:17:30)
    at /home/daniel/src/yarn/node_modules/babel-runtime/helpers/asyncToGenerator.js:28:20
    at run (/home/daniel/src/yarn/node_modules/core-js/library/modules/es6.promise.js:87:22)
    at /home/daniel/src/yarn/node_modules/core-js/library/modules/es6.promise.js:100:28
    at flush (/home/daniel/src/yarn/node_modules/core-js/library/modules/_microtask.js:18:9)

This blocks installation of create-react-app, browserify and webpack on Windows (among other things) as they all have a dependency on either chokidar or fsevents

@Daniel15
Copy link
Member Author

@kittens - Any ideas if this is an easy fix? I think it's blocking for launch given Windows and Linux users currently can't install packages that have a transitive dependency on fsevents.

@Daniel15
Copy link
Member Author

Looks like this regressed at some point 😢 #1285

@kenotron
Copy link
Contributor

I think this change fixed it half-way, fixing #1285 should bring it to completion. @kittens can you please take a look?

@bcomnes
Copy link

bcomnes commented Mar 21, 2017

Ran into this issue today with winston-winlog3 in optionalDependencies on macOS.

@BasmaRadadi
Copy link

BasmaRadadi commented Dec 19, 2017

hello i am using windows 10 and i am working with Jhipster ( with Angular1 ans Postgres as SGDB) and i have have same bug
and here is my package.json file
{ "name": "j-hipster-registry", "version": "0.0.0", "description": "Description for JHipsterRegistry", "private": true, "cacheDirectories": [ "node_modules" ], "dependencies": { "@angular/common": "4.0.0", "@angular/compiler": "4.0.0", "@angular/core": "4.0.0", "@angular/forms": "4.0.0", "@angular/http": "4.0.0", "@angular/platform-browser": "4.0.0", "@angular/platform-browser-dynamic": "4.0.0", "@angular/router": "4.0.0", "@ng-bootstrap/ng-bootstrap": "1.0.0-alpha.23", "angular2-cookie": "1.2.6", "angular2-infinite-scroll": "0.3.4", "bootstrap": "4.0.0-alpha.6", "core-js": "2.4.1", "font-awesome": "4.7.0", "gulp": "^3.9.1", "jquery": "3.2.1", "ng-jhipster": "0.1.12", "ng2-webstorage": "1.6.2", "reflect-metadata": "0.1.10", "rxjs": "5.3.0", "swagger-ui": "2.2.10", "tether": "1.4.0", "zone.js": "0.8.5" }, "devDependencies": { "@angular/cli": "1.0.0", "@angular/compiler-cli": "4.0.0", "@types/jasmine": "2.5.47", "@types/node": "7.0.12", "add-asset-html-webpack-plugin": "1.0.2", "angular2-template-loader": "0.6.2", "awesome-typescript-loader": "3.1.2", "browser-sync": "2.18.8", "browser-sync-webpack-plugin": "1.1.4", "codelyzer": "2.1.1", "copy-webpack-plugin": "4.0.0", "css-loader": "0.28.0", "del": "2.2.2", "event-stream": "3.3.4", "exports-loader": "0.6.4", "extract-text-webpack-plugin": "2.1.0", "file-loader": "0.11.1", "generator-jhipster": "4.3.0", "html-loader": "0.4.5", "html-webpack-plugin": "2.28.0", "jasmine-core": "2.5.2", "karma": "1.6.0", "karma-chrome-launcher": "2.0.0", "karma-coverage": "1.1.1", "karma-intl-shim": "1.0.3", "karma-jasmine": "1.1.0", "karma-junit-reporter": "1.2.0", "karma-notify-reporter": "1.0.1", "karma-phantomjs-launcher": "1.0.4", "karma-remap-istanbul": "0.6.0", "karma-sourcemap-loader": "0.3.7", "karma-webpack": "2.0.3", "lazypipe": "1.0.1", "lodash": "4.17.4", "map-stream": "0.0.7", "phantomjs-prebuilt": "2.1.14", "proxy-middleware": "0.15.0", "rimraf": "2.6.1", "run-sequence": "1.2.2", "sourcemap-istanbul-instrumenter-loader": "0.2.0", "string-replace-webpack-plugin": "0.1.3", "style-loader": "0.16.1", "to-string-loader": "1.1.5", "tslint": "4.5.1", "tslint-loader": "3.5.2", "typescript": "2.2.2", "webpack": "2.3.3", "webpack-dev-server": "2.4.2", "webpack-merge": "4.1.0", "webpack-notifier": "1.5.0", "webpack-visualizer-plugin": "0.1.11", "write-file-webpack-plugin": "3.4.2", "xml2js": "0.4.17", "sass-loader": "5.0.1", "node-sass": "4.5.0", "postcss-loader": "1.3.0", "yargs": "6.6.0" }, "engines": { "node": ">=6.9.0" }, "scripts": { "lint": "tslint 'src/main/webapp/app/**/*.ts' --force", "lint:fix": "tslint 'src/main/webapp/app/**/*.ts' --fix --force", "tsc": "tsc", "tsc:w": "tsc -w", "ngc": "ngc -p tsconfig-aot.json", "cleanup": "rimraf target/", "start": "yarn run webpack:dev", "webpack:build": "yarn run ngc && webpack --config webpack/webpack.vendor.js && webpack --config webpack/webpack.dev.js", "webpack:build:dev": "webpack --config webpack/webpack.dev.js", "webpack:build:vendor": "webpack --config webpack/webpack.vendor.js", "webpack:dev": "webpack-dev-server --config webpack/webpack.dev.js --progress --inline --hot --profile --port=9060", "webpack:prod": "yarn run ngc && yarn run test && webpack -p --config webpack/webpack.vendor.js && webpack -p --config webpack/webpack.prod.js", "test": "yarn run lint && karma start src/test/javascript/karma.conf.js", "test:watch": "karma start --watch", "postinstall": "yarn run webpack:build" } }

and this is what the error shows

yarn install v0.19.1 [1/4] Resolving packages... [2/4] Fetching packages... warning [email protected]: The platform "win32" is incompatible with this module. info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation. [3/4] Linking dependencies...
thnks 4 help

@craxal
Copy link

craxal commented Sep 17, 2019

Was this properly resolved? I'm interested in switching my team's process to yarn, but I'm running into similar issues here.

I'm attempting to setup workspaces, because we have a monrepo setup, and the source registry is a private registry in Azure DevOps. The problematic package is our own native node module in the workspace (it has "os": [ "darwin" ] in the package.json). We have another workspace package that optionally includes it ("optionalDependencies": { "our-native-package": "1.0.0" }). Yarn fails to install with an error saying our-native-package is incompatible.

@ingles98
Copy link

ingles98 commented Jun 9, 2021

Was this ever fixed? I'm having this issue right now in 2021.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants