Error: EEXIST, file already exists #3413

Closed
fivetwentysix opened this Issue Mar 4, 2015 · 131 comments

Projects

None yet
@fivetwentysix
file changed templates/application.hbs
EEXIST, file already exists '/Users/fivetwentysix/testapp/tmp/caching-writer-dest-dir_GE6biD.tmp'
Error: EEXIST, file already exists '/Users/fivetwentysix/testapp/tmp/caching-writer-dest-dir_GE6biD.tmp'
    at Error (native)
    at Object.fs.symlinkSync (fs.js:852:18)
    at symlink (/Users/fivetwentysix/testapp/node_modules/ember-cli/node_modules/symlink-or-copy/index.js:82:14)
    at Function.symlinkOrCopySync (/Users/fivetwentysix/testapp/node_modules/ember-cli/node_modules/symlink-or-copy/index.js:58:5)
    at /Users/fivetwentysix/testapp/node_modules/ember-cli/node_modules/broccoli-sourcemap-concat/node_modules/broccoli-caching-writer/index.js:103:21
    at lib$rsvp$$internal$$tryCatch (/Users/fivetwentysix/testapp/node_modules/ember-cli/node_modules/promise-map-series/node_modules/rsvp/dist/rsvp.js:489:16)
    at lib$rsvp$$internal$$invokeCallback (/Users/fivetwentysix/testapp/node_modules/ember-cli/node_modules/promise-map-series/node_modules/rsvp/dist/rsvp.js:501:17)
    at lib$rsvp$$internal$$publish (/Users/fivetwentysix/testapp/node_modules/ember-cli/node_modules/promise-map-series/node_modules/rsvp/dist/rsvp.js:472:11)
    at lib$rsvp$asap$$flush (/Users/fivetwentysix/testapp/node_modules/ember-cli/node_modules/promise-map-series/node_modules/rsvp/dist/rsvp.js:1290:9)
    at process._tickCallback (node.js:355:11)

Happens when I save any file with ember serve running.

This happens on a brand new project created with ember-cli-0.1.15

Here's a sample repo: https://github.com/fivetwentysix/ember-test-app

@Soliah
Soliah commented Mar 4, 2015

This is happening to me too. Fresh app with 0.1.2-beta.1. Maybe something has changed in a dependency upstream?

https://gist.github.com/Soliah/edc8f012cc9e6800005d

@btecu
Contributor
btecu commented Mar 4, 2015

Any of you using outputPaths?

#3365

@wstrinz
wstrinz commented Mar 4, 2015

I'm getting this too, tried with multiple versions of ember-cli. Not using outputPaths as far as I know, just a plain old ember new myapp.

@mariozig
mariozig commented Mar 4, 2015

@fivetwentysix aside from stopping the server prior to making changes, have you found any sort of work around for this?

I'm experiencing it too in an unadulterated stock ember app on:

version: 0.2.0-beta.1
node: 0.12.0
npm: 2.1.8

@btecu no outputPaths here. Obviously it's referenced in node_modules/ember-cli/lib/broccoli/ember-app.js but the app i just tested on is a fresh install of ember cli, a newed up app, and no modifications other than rewriting a project file out.

@btecu
Contributor
btecu commented Mar 4, 2015

Probably a bad idea, but what I did to get around this problem was editing app/node_modules/ember-cli/node_modules/symlink-or-copy/copy-dereference/index.js and replace
fs.writeFileSync(dest, contents, { flag: 'wx', mode: srcStats.mode }) with
fs.writeFileSync(dest, contents, { flag: 'w', mode: srcStats.mode })

Restart ember server afterwards...

@mariozig
mariozig commented Mar 4, 2015

@bobbyhubbard are you sure it's the same bug? nodejs/node-v0.x-archive#8651 says it was fixed in node: 0.12.0 and i'm definitely seeing it with that version.

@stickbyatlas

Hi folks - an hour ago, I did an npm update in my project directory. Immediately afterward, I started noticing the same crashing behaviour after changing a file while serving. Like others here, I suspect this has to do with an upstream dependency completely breaking everything, but I have no idea which one it could be. Would it be useful to share the contents of package.json here?

(For the record, the 'already existing' file is tmp/class-tmp_cache_dir-85EAruZ0.tmp , which is only relevant in that it's also a tmp/... file. The last step in the trace is Object.fs.symlinkSync. Would be happy to share the rest of the trace if it'll help.)

@fivetwentysix

This is why npm needs something similar to gemfile.lock

@stickbyatlas

If I knew how to reverse / undo npm update, I'd do it in a heartbeat. I can't even parse the output of the command, it's just a jumble of different dependency trees and conflict warnings. Every time I think "maybe Javascript has finally matured," something like this happens, the whole building topples, and I yearn for a classic, vetted language with a massive standard library.

@dopin
dopin commented Mar 4, 2015

I'm getting this too. I'm not sure if this works but if you specify "rimraf":"2.2.8" in package.json, it fixes.
rimraf 2.3.0 is just released about 7 hours ago from now.

@Soliah
Soliah commented Mar 4, 2015

Confirming @dopin's suggestion of forcing rimraf to 2.2.8 works. Make sure to add this to dependencies and not devDependencies.

@JohnRodney

@dopin's suggestion did not work for me. I tried cloning (broken), installing (broken), open old files (worked). Something new in the way that cache files are stored. If I just delete all the cache files with the commonatliy of "caching-writer-dest-dir{otherjunkhere}" then it saved ONCE fine. Next time back to broken.

@fotinakis
Contributor

Hitting this too just in the last few hours, yikes yikes...

@gevious
gevious commented Mar 4, 2015

thats the danger of being an early adopter ;)

@tehmaestro

Yup, same here. I just updated Ember to 1.11 beta. If I go back to 1.10, will this go away?
EDIT: No it doesn't. Ignore the referenced issue.

EDIT2: It appears that there is an issue when the project is being watched. If I run ember build manually, every time, I don't get any errors.

@tehmaestro tehmaestro referenced this issue in ember-animation/liquid-fire Mar 4, 2015
Closed

Apply transitions between different components #192

@DenizOkcu

@dopin 's fix works for me too.
Additional information:
npm install with rimraf v2.3.0:

npm WARN unmet dependency /home/{*}/node_modules/broccoli-caching-writer/node_modules/rimraf requires glob@'^4.4.1' but will load
npm WARN unmet dependency /home/{*}/node_modules/glob,
npm WARN unmet dependency which is version 4.0.5
npm WARN unmet dependency /home/{*}/node_modules/broccoli-es6modules/node_modules/broccoli-caching-writer/node_modules/rimraf requires glob@'^4.4.1' but will load
npm WARN unmet dependency /home/{*}/node_modules/glob,
npm WARN unmet dependency which is version 4.0.5
npm WARN unmet dependency /home/{*}/node_modules/broccoli-es6modules/node_modules/esperanto/node_modules/sander/node_modules/rimraf requires glob@'^4.4.1' but will load
npm WARN unmet dependency /home/{*}/node_modules/glob,
npm WARN unmet dependency which is version 4.0.5
npm WARN unmet dependency /home/{*}/node_modules/broccoli-sourcemap-concat/node_modules/broccoli-caching-writer/node_modules/rimraf requires glob@'^4.4.1' but will load
npm WARN unmet dependency /home/{*}/node_modules/glob,
npm WARN unmet dependency which is version 4.0.5
@olivierlesnicki

Same here!

file changed controllers/journey.js
EEXIST, file already exists '/Users/pro/Workbench/Centrica/Github/home-move/tmp/class-tmp_cache_dir-fIzB9FpE.tmp'
Error: EEXIST, file already exists '/Users/pro/Workbench/Centrica/Github/home-move/tmp/class-tmp_cache_dir-fIzB9FpE.tmp'
    at Object.fs.symlinkSync (fs.js:741:18)
    at symlink (/Users/pro/Workbench/Centrica/Github/home-move/node_modules/ember-cli/node_modules/symlink-or-copy/index.js:82:14)
    at Function.symlinkOrCopySync [as sync] (/Users/pro/Workbench/Centrica/Github/home-move/node_modules/ember-cli/node_modules/symlink-or-copy/index.js:58:5)
    at /Users/pro/Workbench/Centrica/Github/home-move/node_modules/ember-cli/node_modules/broccoli-sourcemap-concat/node_modules/broccoli-caching-writer/index.js:103:21
    at lib$rsvp$$internal$$tryCatch (/Users/pro/Workbench/Centrica/Github/home-move/node_modules/ember-cli/node_modules/promise-map-series/node_modules/rsvp/dist/rsvp.js:489:16)
    at lib$rsvp$$internal$$invokeCallback (/Users/pro/Workbench/Centrica/Github/home-move/node_modules/ember-cli/node_modules/promise-map-series/node_modules/rsvp/dist/rsvp.js:501:17)
    at lib$rsvp$$internal$$publish (/Users/pro/Workbench/Centrica/Github/home-move/node_modules/ember-cli/node_modules/promise-map-series/node_modules/rsvp/dist/rsvp.js:472:11)
    at Object.lib$rsvp$asap$$flush [as _onImmediate] (/Users/pro/Workbench/Centrica/Github/home-move/node_modules/ember-cli/node_modules/promise-map-series/node_modules/rsvp/dist/rsvp.js:1290:9)
    at processImmediate [as _immediateCallback] (timers.js:345:15)
@olivierlesnicki

I confirm that specifying "rimraf":"2.2.8" as a dependency fixed it.

@badazz91
Contributor
badazz91 commented Mar 4, 2015

Hey guys,

I tried it with "rimraf":"2.3.0" - still getting the same issue.

I tried it with both ember-cli 0.1.15 and 0.2.0-beta.1.

version: 0.2.0-beta.1
node: 0.12.0
npm: 2.1.8
@olivierlesnicki

@badazz91 Try rimraf 2.2.8 not 2.3.0

@jmurphyau
Contributor

@olivierlesnicki - Could you update your comment? It should be 'rimraf' but you've put 'rifraf'

@badazz91
Contributor
badazz91 commented Mar 4, 2015

@olivierlesnicki ok using

`"rimraf":"2.2.8"`` as a dependency and a fresh npm install did the trick.

Also I noticed, that if you are using broccoli-sass and node 0.12.0 you need to make sure that you are using this version

"broccoli-sass": "^0.4.0" in your package.json

Thanks.

@stickbyatlas

So, I totally don't even know what rimraf is, but this did the trick for me.
Thanks, all!

@aymerick aymerick added a commit to aymerick/kowa that referenced this issue Mar 4, 2015
@aymerick aymerick Fixes ember-cli/ember-cli#3413 1e1ed7b
@BilalBudhani

After adding "rimraf":"2.2.8" in my package.json everything started working. Thanks @dopin

@wautersj
wautersj commented Mar 4, 2015

I confirm that the issue was resolved after adding "rimraf":"2.2.8" as a dependency and redoing npm

@ryanlabouve
Contributor

Yup. Thanks @dopin! Adding "rimraf":"2.2.8" as a dependency worked for me too.

@Kerry350
Kerry350 commented Mar 4, 2015

Can confirm adding "rimraf":"2.2.8" has worked for me too πŸ‘

Edit:

OS: OS X 10.9.2 (Mavericks)
ember-cli version: 0.1.15
node: 0.10.36
npm: 2.1.8

@ahx
ahx commented Mar 4, 2015

Is this a bug in rimraf? Should we tell it?

@dopin
dopin commented Mar 4, 2015

@ahx I guess so.

@sararob
sararob commented Mar 4, 2015

I had the same error and fixed it by removing my .cache directory

@mariozig
mariozig commented Mar 4, 2015

I'm actually seeing the same as @JohnRodney -- adding "rimraf":"2.2.8" did not fix the issue.

Thanks to other people's comments, here's what I did to successfully work around the problem using:

➜  mustache git:(develop) βœ— ember --version
version: 0.2.0-beta.1
node: 0.12.0
npm: 2.1.8

os: Yosemite 10.10.2 

1- Updated package.json with:

  "dependencies": {
    "rimraf": "2.2.8"
  },

2- ➜ mustache git:(develop) βœ— rm -rf node_modules tmp dist && npm cache clean

3- ➜ mustache git:(develop) βœ— ember install

I start up the server and see the same issue.

I'm using node 0.12.0 and also tried @badazz91 's suggestion to use "broccoli-sass": "^0.4.0" -- still happens.

Have i missed something?

@dopin
dopin commented Mar 4, 2015

@mariozig rm -rf tmp dist ?

@raytiley
Member
raytiley commented Mar 4, 2015

Can people seeing this issue update this thread with OS, node, npm, versions etc. I'll see what I can do about reproducing and fixing today.

@dopin
dopin commented Mar 4, 2015

@raytiley Here's mine:
OS: Mac Yosemite
Node: v0.10.36
npm: 1.4.28
ember-cli: v0.1.15

@mariozig
mariozig commented Mar 4, 2015

@dopin @raytiley I'm good to go now -- thank you! Updated my comment with version and (hopefully) some useful info for others.

@msalahz
msalahz commented Mar 4, 2015

OS: Windows 8.1
Node: v0.12.0
npm: 2.5.1
ember-cli: v0.1.15

@wwwdata
wwwdata commented Mar 4, 2015

ember-cli: 0.2.0-beta.1
node: v0.12.0
npm: 2.5.1

my package.json:

{
  "name": "web",
  "version": "0.0.0",
  "private": true,
  "directories": {
    "doc": "doc",
    "test": "test"
  },
  "scripts": {
    "start": "ember server",
    "build": "ember build",
    "test": "ember test"
  },
  "engines": {
    "node": ">= 0.10.0"
  },
  "author": "",
  "license": "MIT",
  "devDependencies": {
    "broccoli-asset-rev": "^2.0.0",
    "ember-cli": "0.2.0-beta.1",
    "ember-cli-app-version": "0.3.1",
    "ember-cli-babel": "^4.0.0",
    "ember-cli-coffeescript": "0.9.1",
    "ember-cli-content-security-policy": "0.3.0",
    "ember-cli-dependency-checker": "0.0.7",
    "ember-cli-html5-validation": "0.0.16",
    "ember-cli-htmlbars": "0.7.4",
    "ember-cli-ic-ajax": "0.1.1",
    "ember-cli-inject-live-reload": "^1.3.0",
    "ember-cli-qunit": "0.3.7",
    "ember-cli-sass": "3.1.0",
    "ember-cli-uglify": "1.0.1",
    "ember-data": "1.0.0-beta.14.1",
    "ember-export-application-global": "^1.0.2",
    "ember-idx-button": "^0.1.3",
    "ember-idx-forms": "^0.5.1",
    "ember-json-api": "^0.2.3",
    "ember-template-compiler": "^1.8.0",
    "ember-validations": "^2.0.0-alpha.2",
    "express": "^4.8.5",
    "glob": "4.0.5",
    "handlebars": "^1.3.0",
    "originate": "0.1.5"
  }
}

hope it helps.. nothing so far helped me to avoid this error... i just upgraded to ember cli beta from 0.1.15, I had the error with that version as well I even tried to downgrade to node 0.10, but that also didn't fix the error ...

@mariozig
mariozig commented Mar 4, 2015

@wwwdata you could try these steps for a temp fix/workaround: #3413 (comment)

@Bargs
Bargs commented Mar 4, 2015

OS: OSX Yosemite
Node: v0.12.0
ember-cli: v0.1.15

npm --version reports 2.5.1 but ember --version reports 2.1.8. I'm using nvm, so maybe that is the reason?

@msalahz
msalahz commented Mar 4, 2015

Following @mariozig steps gave me this error :
C:\xampp\htdocs\tugg>rm -rf node_modules tmp dist && npm cache clean

C:\xampp\htdocs\tugg>ember install
version: 0.1.15
Installed browser packages via Bower.
Installing packages for tooling via npm..fs.js:988
binding.chown(pathModule._makeLong(path), uid, gid, req);
^
TypeError: uid must be an unsigned int
at TypeError (native)
at Object.fs.chown (fs.js:988:11)
at Object. (C:\Users\mohamed.zaghloul\AppData\Roaming\npm\node_modules\ember-cli\node_mod
ules\bower-config\node_modules\graceful-fs\polyfills.js:131:17)
at Object. (C:\Users\mohamed.zaghloul\AppData\Roaming\npm\node_modules\ember-cli\node_mod
ules\bower\node_modules\bower-registry-client\node_modules\graceful-fs\polyfills.js:131:17)
at Object.chown (C:\Users\mohamed.zaghloul\AppData\Roaming\npm\node_modules\ember-cli\node_modules\b
ower\node_modules\bower-json\node_modules\graceful-fs\polyfills.js:131:17)
at C:\Users\mohamed.zaghloul\AppData\Roaming\npm\node_modules\ember-cli\node_modules\npm\node_module
s\chownr\chownr.js:12:43
at ReaddirReq.Req.done (C:\Users\mohamed.zaghloul\AppData\Roaming\npm\node_modules\ember-cli\node_mo
dules\bower\node_modules\bower-json\node_modules\graceful-fs\graceful-fs.js:143:5)
at ReaddirReq.done (C:\Users\mohamed.zaghloul\AppData\Roaming\npm\node_modules\ember-cli\node_module
s\bower\node_modules\bower-json\node_modules\graceful-fs\graceful-fs.js:90:22)
at ReaddirReq.Req.done (C:\Users\mohamed.zaghloul\AppData\Roaming\npm\node_modules\ember-cli\node_mo
dules\bower\node_modules\bower-registry-client\node_modules\graceful-fs\graceful-fs.js:143:5)
at ReaddirReq.done (C:\Users\mohamed.zaghloul\AppData\Roaming\npm\node_modules\ember-cli\node_module
s\bower\node_modules\bower-registry-client\node_modules\graceful-fs\graceful-fs.js:90:22)

@isaacs
isaacs commented Mar 4, 2015

Hey, folks. rimraf author here.

I've re-pointed the "latest" tag at rimraf@2.2.8 which should address new fresh installs.

Can anyone drop some details into isaacs/rimraf#65 about how this is manifesting? Is it failing to remove something that it should?

I suspect that it may be related to isaacs/node-glob#170, perhaps it's failing to see a symlink that points to a missing dir, and then not unlinking it?

@raytiley
Member
raytiley commented Mar 4, 2015

@isaacs thanks for the update. I'm working on isolating what's causing the failure now. I'll update when I figure something out.

@20v100
20v100 commented Mar 4, 2015

I'm running Ember-CLI on Nitrous.io IDE:
Node: 0.10.26
NPM: 1.4.3
Ember: 0.2.0-beta.1

The project compile fine on the first run. But as soon as a change on the of app file, it crash. I run ember-cli on port 3000 (ember serve -port 3000). It also tell me that "could not find watchman, failing back to NodeWatcher for file system events"

I just started this new project on Nitrous today. All the nodes, npm and ember were freshly installed today.

Error:
EEXIST, file already exists '/home/action/mktk/tmp/class-tmp_cache_dir-YFUpnEom.tmp'
Error: EEXIST, file already exists '/home/action/mktk/tmp/class-tmp_cache_dir-YFUpnEom.tmp'
at Object.fs.symlinkSync (fs.js:730:18)
at symlink (/home/action/mktk/node_modules/ember-cli/node_modules/symlink-or-copy/index.js:82:14)
at Function.symlinkOrCopySync as sync
at /home/action/mktk/node_modules/ember-cli/node_modules/broccoli-sourcemap-concat/node_modules/broccoli-caching-writer/index.js:103:21
at lib$rsvp$$internal$$tryCatch (/home/action/mktk/node_modules/ember-cli/node_modules/promise-map-series/node_modules/rsvp/dist/rsvp.js:489:16)
at lib$rsvp$$internal$$invokeCallback (/home/action/mktk/node_modules/ember-cli/node_modules/promise-map-series/node_modules/rsvp/dist/rsvp.js:501:17)
at lib$rsvp$$internal$$publish (/home/action/mktk/node_modules/ember-cli/node_modules/promise-map-series/node_modules/rsvp/dist/rsvp.js:472:11)
at Object.lib$rsvp$asap$$flush as _onImmediate
at processImmediate as _immediateCallback

tks

@wwwdata
wwwdata commented Mar 4, 2015

@mariozig adding the rimraf package worked for me!

@chadhietala
Member

Ember CLI does not have a direct dependency on rimraf anymore as it was removed in #3101. So there is some transitive dependency that is causing this.

Can some one try to prune and dedupe the dependencies and see if you can get an offending module?

cd my-failing-application
npm prune
npm dedupe
ember serve
@shajith
shajith commented Mar 4, 2015

Just adding another data point. Saw the error on a fresh ember app yesterday, downgrading rimraf to 2.2.8 fixes it. isaacs/node-glob#170 seems like a promising lead?

@fivetwentysix

@chadhietala

➜  console-client git:(master) βœ— npm prune
npm dedupe
➜  console-client git:(master) βœ— npm dedupe
➜  console-client git:(master) βœ— ember serve
version: 0.1.15
Livereload server on port 35729
Serving on http://0.0.0.0:4200/

Build successful - 8365ms.

Slowest Trees                  | Total
-------------------------------+----------------
Concat: Vendor                 | 2626ms
Babel                          | 1108ms
JSHint app- QUnit              | 748ms
ES3SafeFilter                  | 614ms
ES6: App Tree                  | 582ms

file changed templates/units/index.hbs
EEXIST, file already exists '/Users/fivetwentysix/work/console-client/tmp/caching-writer-dest-dir_b65YUo.tmp'
Error: EEXIST, file already exists '/Users/fivetwentysix/work/console-client/tmp/caching-writer-dest-dir_b65YUo.tmp'
  at Error (native)
  at Object.fs.symlinkSync (fs.js:852:18)
  at symlink (/Users/fivetwentysix/work/console-client/node_modules/ember-cli-less/node_modules/broccoli-less-single/node_modules/broccoli-caching-writer/node_modules/symlink-or-copy/index.js:82:14)
  at Function.symlinkOrCopySync (/Users/fivetwentysix/work/console-client/node_modules/ember-cli-less/node_modules/broccoli-less-single/node_modules/broccoli-caching-writer/node_modules/symlink-or-copy/index.js:58:5)
  at /Users/fivetwentysix/work/console-client/node_modules/ember-cli-less/node_modules/broccoli-less-single/node_modules/broccoli-caching-writer/index.js:103:21
  at lib$rsvp$$internal$$tryCatch (/Users/fivetwentysix/work/console-client/node_modules/ember-cli-less/node_modules/broccoli-less-single/node_modules/rsvp/dist/rsvp.js:489:16)
  at lib$rsvp$$internal$$invokeCallback (/Users/fivetwentysix/work/console-client/node_modules/ember-cli-less/node_modules/broccoli-less-single/node_modules/rsvp/dist/rsvp.js:501:17)
  at lib$rsvp$$internal$$publish (/Users/fivetwentysix/work/console-client/node_modules/ember-cli-less/node_modules/broccoli-less-single/node_modules/rsvp/dist/rsvp.js:472:11)
  at lib$rsvp$asap$$flush (/Users/fivetwentysix/work/console-client/node_modules/ember-cli-less/node_modules/broccoli-less-single/node_modules/rsvp/dist/rsvp.js:1290:9)
  at process._tickCallback (node.js:355:11)
@raytiley
Member
raytiley commented Mar 4, 2015

Hey everyone... Fresh installs as of 45 minutes ago should work (make sure you node cache clear).

The problem is 'broccoli-caching-writeris callingrimrafwith a broken symlink. Due to a combination of a bug with node-glob (isaacs/node-glob#170 ) ~~and thatbroccoli-caching-writer` is not calling rimraf with the correct options to remove the broken symlink.~ Once these issues are resolved rimraf 2.3.0 should work, and provide a more reliable experience for our windows users.

I am still trying to track down where that broken symlink is coming from.

Correction
Just realized that broccoli-caching-writer isn't responsible at all. Trying to pay attention to an emberconf talk and debug this at the same time.

@fivetwentysix

@raytiley confirmed

rm -Rf node_modules tmp dist bower_components
ember serve

worked for me

@raytiley
Member
raytiley commented Mar 4, 2015

@fivetwentysix great. I wanna keep this open until we can confirm that rimraf 2.3.0 works and I figure out where the broken symlink is coming from.

@raytiley raytiley reopened this Mar 4, 2015
@mariozig
mariozig commented Mar 4, 2015

Working for me too

@msalahz
msalahz commented Mar 4, 2015

Upgrading Ember-Cli from 0.1.15 to 0.2.0beta-1 fixed the issue for me

@fivetwentysix

@msalahz ember-cli 0.1.15 still works for me

@msalahz
msalahz commented Mar 4, 2015

@fivetwentysix I tried another machine with ember-cli 0.1.15 and I did
rm -Rf node_modules tmp dist bower_components and ember install and everything worked with me

@fivetwentysix

0.2.0-beta.1 works as well

@20v100
20v100 commented Mar 5, 2015

I tried rm -Rf node_modules tmp dist bower_components and ember install on ember-cli 0.2.0-beta.1 and everything is working fine now.

@isaacs isaacs added a commit to isaacs/node-glob that referenced this issue Mar 5, 2015
@isaacs isaacs Fix broken symlink handling 4fd4a48
@isaacs isaacs added a commit to isaacs/rimraf that referenced this issue Mar 5, 2015
@isaacs isaacs Handle bad symlinks properly
Regression introduced by pulling in glob as a dep, due to root cause
isaacs/node-glob#170.

Added good and bad symlinks to test, which would have caught this.

Fixes #65
Fixes ember-cli/ember-cli#3413
8d2f11d
@isaacs
isaacs commented Mar 5, 2015

Can anyone affected by this please confirm that rimraf 2.3.1 (just released) no longer has this bug?

Thanks!

@raytiley
Member
raytiley commented Mar 5, 2015

@isaacs I'll pull it down as soon as I find some internet.

@dopin
dopin commented Mar 5, 2015

@isaacs @raytiley Thanks for your work! I just tried it.
It works by specifing rimraf:2.3.1 as dependency now!
But if I remove it, it fails with the same EEXIST error even if rimraf:2.3.0 not listed in npm list |grep rimraf.

@raytiley
Member
raytiley commented Mar 5, 2015

@dopin have you tried clearing your npm cache? The fix is actually in node-glob (isaacs/node-glob@4fd4a48) so you may be getting some weird behavior if you don't have a specific version of rimraf.

@isaacs 2.3.1 is looking good for me. 2.3.0 is working fine as well since its pulling in the latest node-glob. Thanks again for fixing this so quickly.

@dopin
dopin commented Mar 5, 2015

@raytiley Yes, I removed the cache. And I also tried specifying rimraf:2.3.0 now and it works. I'm so sorry for my mistaking. @isaacs πŸ˜”

@max
Contributor
max commented Mar 5, 2015

@raytiley Should this also work without specifying a rimraf version after an npm cache clean?

@raytiley
Member
raytiley commented Mar 5, 2015

@max I believe so. I haven't tested that specifically but will later tonight or first thing in the morning.

@max
Contributor
max commented Mar 5, 2015

@raytiley Can't get it to work without specifying rimraf and for the life of me don't know why.

@jimbeaudoin

@raytiley We still need to specify rimraf:2.3.1 as a dependencies to get ember-cli to work out of the box. Fresh Install. Cache Cleared.

@raytiley
Member
raytiley commented Mar 5, 2015

Hey all. I'll look into what's happening as soon as I can.

@jimbeaudoin

πŸ‘

@alvincrespo

Yup, specifying rimraf:2.3.1 in the package.json fixes the issue. πŸ‘

@adamsrog
adamsrog commented Mar 5, 2015

Experiencing this issue a fresh app. Cleaned npm cache.

ember-cli 0.1.15
node 0.10.35
npm 1.4.28
os x 10.10.2

@isaacs
isaacs commented Mar 5, 2015

@adamsrog Can you please run these two commands and share the output?

npm ls rimraf
npm ls glob

Thanks.

@DenizOkcu

I think I found it:

"glob": "4.0.5",

(https://github.com/ember-cli/ember-cli/blob/master/package.json#L115)
should be something like:

"glob": "^4.4.1",

Source:
npm ls glob -> glob@4.0.5 invalid and

npm WARN unmet dependency /home/{*}/node_modules/broccoli-caching-writer/node_modules/rimraf requires glob@'^4.4.1' but will load
npm WARN unmet dependency /home/{*}/node_modules/glob,
npm WARN unmet dependency which is version 4.0.5
npm WARN unmet dependency /home/{*}/node_modules/broccoli-es6modules/node_modules/broccoli-caching-writer/node_modules/rimraf requires glob@'^4.4.1' but will load
npm WARN unmet dependency /home/{*}/node_modules/glob,
npm WARN unmet dependency which is version 4.0.5
npm WARN unmet dependency /home/{*}/node_modules/broccoli-es6modules/node_modules/esperanto/node_modules/sander/node_modules/rimraf requires glob@'^4.4.1' but will load
npm WARN unmet dependency /home/{*}/node_modules/glob,
npm WARN unmet dependency which is version 4.0.5
npm WARN unmet dependency /home/{*}/node_modules/broccoli-sourcemap-concat/node_modules/broccoli-caching-writer/node_modules/rimraf requires glob@'^4.4.1' but will load
npm WARN unmet dependency /home/{*}/node_modules/glob,
npm WARN unmet dependency which is version 4.0.5

Does that make any sense?

@Fed03
Contributor
Fed03 commented Mar 5, 2015

@fivetwentysix that didn't work for me

@Fed03
Contributor
Fed03 commented Mar 5, 2015

Ok, I've a repo that i cloned into 2 different machines, both with windows 7, node v0.12, and ember-cli 0.1.15

On one machine the problem's not present, in the other yes.
the only difference in the node_modules is the glob verion:

  • in the working is 4.4.1
  • in the not working is 4.4.2

P.S. @isaacs I cannot install glob@4.4.1 why? npm ERR! version not found: glob@4.4.1

@lolmaus
Contributor
lolmaus commented Mar 5, 2015

Ran into this issue after removing node_modules/ and reinstalling them.

Is there a reliable way to resolve this?

@twokul twokul closed this in db070a3 Mar 5, 2015
@raytiley
Member
raytiley commented Mar 5, 2015

I'll close this once we release the fix. Sorry its taking a while everyone... Should be published later today. for now you can follow the instructions here to lock into rimraf 2.2.8 (#3413 (comment)

@raytiley raytiley reopened this Mar 5, 2015
@isaacs
isaacs commented Mar 5, 2015

@Fed03 I unpublished glob@4.4.1 because it's broken, and renders rimraf unable to delete files, without providing any warnings (since the first rimraf version that depended on glob would accept 4.4.1, and the fixed version of glob is 4.4.2.)

I suspect that you are encountering a different issue. Can you provide any more details about what isn't being deleted? Also, can you share the output of npm ls rimraf; npm ls glob?

@lolmaus Can you explain exactly what you mean by "this issue"? Is a file not being deleted by rimraf? Which version of rimraf? npm ls rimraf; npm ls glob

@adamsrog The issue is that you have some copies of rimraf@3.3.1 in there, which pulls in glob to do pattern matching. However, i'ts getting a version of glob that didn't properly expand to symlinks if those symlinks point to an invalid target, so it's failing to delete those things (since it thinks that they're already gone).

The solution is to fix those warnings that npm is throwing at you. The simplest solution is to re-install anything that points at rimraf.

@isaacs
isaacs commented Mar 5, 2015

Everyone: the fix here is not to roll rimraf back to 2.2.8. If you are still being affected by this, you have a broken version of glob in there, which is bound to cause other problems. Another solution is to put "glob":"^4.4.2" in your top-level dependencies, and then either re-install, or run npm dedupe to squash everything and make them all share the same deps.

@neo-tahi
neo-tahi commented Mar 5, 2015

Hi,

Sadly, we have followed the instructions in this thread but are still seeing the problem. We do not have glob@4.4.1 anywhere in our tree. We see only rimraf 2.2.8 and 2.3.1 in our tree (we added 2.3.1 at the top, but dedupe does not change the 2.2.8's).

Is anyone else still seeing the error after following the instructions in this thread?

PS Thanks for the quick turnaround on looking into all this :)

@isaacs
isaacs commented Mar 5, 2015

@neo-tahi I need to know what isn't being deleted. Can you provide a repro case?

@slindberg
Contributor

@isaacs The issue (failing incremental rebuilds when running ember serve) can be easily reproduced as of a few minutes ago:

EDIT: install ember-cli first of course: npm install -g ember-cli (currently installs v0.2.0-beta.1)

$ npm cache clean
$ ember new app && cd app
$ ember serve

From another terminal in the same cwd:

# change any file in app/
$ touch config/environment.js

Which results in an error that looks like:

EEXIST, file already exists '/tmp/app/tmp/caching-writer-dest-dir_yxETHi.tmp'
@isaacs
isaacs commented Mar 5, 2015

Thanks, @slindberg, I'll take a look.

@isaacs
isaacs commented Mar 5, 2015

It seems like the ember new app is dumping some stuff into node_modules that is invalid. I'm not sure how it's doing that, but there's your problem. Even before running ember serve or touching any files, I see this:

$ npm ls rimraf glob
npm WARN unmet dependency /Users/isaacs/dev/js/x/app/node_modules/ember-cli/node_modules/broccoli-caching-writer/node_modules/rimraf requires glob@'^4.4.2' but will load
npm WARN unmet dependency /Users/isaacs/dev/js/x/app/node_modules/ember-cli/node_modules/glob,
npm WARN unmet dependency which is version 4.0.5
npm WARN unmet dependency /Users/isaacs/dev/js/x/app/node_modules/ember-cli/node_modules/broccoli-es6modules/node_modules/broccoli-caching-writer/node_modules/rimraf requires glob@'^4.4.2' but will load
npm WARN unmet dependency /Users/isaacs/dev/js/x/app/node_modules/ember-cli/node_modules/glob,
npm WARN unmet dependency which is version 4.0.5
npm WARN unmet dependency /Users/isaacs/dev/js/x/app/node_modules/ember-cli/node_modules/broccoli-es6modules/node_modules/esperanto/node_modules/sander/node_modules/rimraf requires glob@'^4.4.2' but will load
npm WARN unmet dependency /Users/isaacs/dev/js/x/app/node_modules/ember-cli/node_modules/glob,
npm WARN unmet dependency which is version 4.0.5
npm WARN unmet dependency /Users/isaacs/dev/js/x/app/node_modules/ember-cli/node_modules/broccoli-sourcemap-concat/node_modules/broccoli-caching-writer/node_modules/rimraf requires glob@'^4.4.2' but will load
npm WARN unmet dependency /Users/isaacs/dev/js/x/app/node_modules/ember-cli/node_modules/glob,
npm WARN unmet dependency which is version 4.0.5
app@0.0.0 /Users/isaacs/dev/js/x/app
β”œβ”€β”¬ broccoli-asset-rev@2.0.1
β”‚ └─┬ broccoli-filter@0.1.11
β”‚   β”œβ”€β”¬ broccoli-kitchen-sink-helpers@0.2.6
β”‚   β”‚ └── glob@4.0.4
β”‚   └─┬ quick-temp@0.1.2
β”‚     └── rimraf@2.2.8
β”œβ”€β”¬ ember-cli@0.2.0-beta.1
β”‚ β”œβ”€β”¬ bower@1.3.12
β”‚ β”‚ └── rimraf@2.2.8
β”‚ β”œβ”€β”¬ broccoli@0.13.3
β”‚ β”‚ └─┬ findup-sync@0.1.3
β”‚ β”‚   └── glob@3.2.11
β”‚ β”œβ”€β”¬ broccoli-caching-writer@0.5.1
β”‚ β”‚ β”œβ”€β”¬ broccoli-kitchen-sink-helpers@0.2.6
β”‚ β”‚ β”‚ └── glob@4.0.4
β”‚ β”‚ β”œβ”€β”¬ quick-temp@0.1.2
β”‚ β”‚ β”‚ └── rimraf@2.2.8
β”‚ β”‚ └── rimraf@2.3.1
β”‚ β”œβ”€β”¬ broccoli-es6modules@0.5.1
β”‚ β”‚ β”œβ”€β”¬ broccoli-caching-writer@0.5.3
β”‚ β”‚ β”‚ β”œβ”€β”¬ quick-temp@0.1.2
β”‚ β”‚ β”‚ β”‚ └── rimraf@2.2.8
β”‚ β”‚ β”‚ └── rimraf@2.3.1
β”‚ β”‚ β”œβ”€β”¬ broccoli-kitchen-sink-helpers@0.2.6
β”‚ β”‚ β”‚ └── glob@4.0.4
β”‚ β”‚ └─┬ esperanto@0.6.17
β”‚ β”‚   └─┬ sander@0.2.2
β”‚ β”‚     └── rimraf@2.3.1
β”‚ β”œβ”€β”¬ broccoli-funnel@0.2.2
β”‚ β”‚ └── rimraf@2.2.8
β”‚ β”œβ”€β”¬ broccoli-sourcemap-concat@0.4.3
β”‚ β”‚ β”œβ”€β”¬ broccoli-caching-writer@0.5.3
β”‚ β”‚ β”‚ β”œβ”€β”¬ quick-temp@0.1.2
β”‚ β”‚ β”‚ β”‚ └── rimraf@2.2.8
β”‚ β”‚ β”‚ └── rimraf@2.3.1
β”‚ β”‚ └─┬ broccoli-kitchen-sink-helpers@0.2.6
β”‚ β”‚   └── glob@4.0.4
β”‚ β”œβ”€β”¬ broccoli-writer@0.1.1
β”‚ β”‚ └─┬ quick-temp@0.1.2
β”‚ β”‚   └── rimraf@2.2.8
β”‚ β”œβ”€β”¬ fs-extra@0.12.0
β”‚ β”‚ └── rimraf@2.2.8
β”‚ β”œβ”€β”€ glob@4.0.5  invalid
β”‚ β”œβ”€β”¬ npm@2.1.8
β”‚ β”‚ β”œβ”€β”€ glob@4.0.6
β”‚ β”‚ └── rimraf@2.2.8
β”‚ β”œβ”€β”¬ quick-temp@0.1.2
β”‚ β”‚ └── rimraf@2.2.8
β”‚ β”œβ”€β”¬ temp@0.8.1
β”‚ β”‚ └── rimraf@2.2.8
β”‚ β”œβ”€β”¬ testem@0.7.0
β”‚ β”‚ β”œβ”€β”¬ fileset@0.1.5
β”‚ β”‚ β”‚ └── glob@3.2.11
β”‚ β”‚ β”œβ”€β”€ glob@4.3.5
β”‚ β”‚ └── rimraf@2.2.8
β”‚ └─┬ yam@0.0.17
β”‚   └─┬ fs-extra@0.8.1
β”‚     └── rimraf@2.2.8
β”œβ”€β”¬ ember-cli-babel@4.1.0
β”‚ β”œβ”€β”¬ broccoli-babel-transpiler@4.0.1
β”‚ β”‚ └─┬ babel-core@4.6.6
β”‚ β”‚   └─┬ regenerator-babel@0.8.13-1
β”‚ β”‚     └─┬ commoner@0.10.1
β”‚ β”‚       └── glob@4.2.2
β”‚ └─┬ broccoli-filter@0.1.11
β”‚   β”œβ”€β”¬ broccoli-kitchen-sink-helpers@0.2.6
β”‚   β”‚ └── glob@4.0.4
β”‚   └─┬ quick-temp@0.1.2
β”‚     └── rimraf@2.2.8
β”œβ”€β”¬ ember-cli-htmlbars@0.7.4
β”‚ └─┬ broccoli-filter@0.1.11
β”‚   β”œβ”€β”¬ broccoli-kitchen-sink-helpers@0.2.6
β”‚   β”‚ └── glob@4.0.4
β”‚   └─┬ quick-temp@0.1.2
β”‚     └── rimraf@2.2.8
β”œβ”€β”¬ ember-cli-qunit@0.3.8
β”‚ └─┬ broccoli-jshint@0.5.3
β”‚   β”œβ”€β”¬ broccoli-filter@0.1.11
β”‚   β”‚ β”œβ”€β”¬ broccoli-kitchen-sink-helpers@0.2.6
β”‚   β”‚ β”‚ └── glob@4.0.4
β”‚   β”‚ └─┬ quick-temp@0.1.2
β”‚   β”‚   └── rimraf@2.2.8
β”‚   β”œβ”€β”¬ findup-sync@0.1.3
β”‚   β”‚ └── glob@3.2.11
β”‚   └─┬ jshint@2.5.11
β”‚     └─┬ cli@0.6.5
β”‚       └── glob@3.2.11
β”œβ”€β”¬ ember-cli-uglify@1.0.1
β”‚ └─┬ broccoli-uglify-sourcemap@0.2.1
β”‚   └─┬ broccoli-writer@0.1.1
β”‚     └─┬ quick-temp@0.1.2
β”‚       └── rimraf@2.2.8
└── glob@4.4.2

npm ERR! invalid: glob@4.0.5 /Users/isaacs/dev/js/x/app/node_modules/ember-cli/node_modules/glob

Running these three commands fixes up the situation:

npm i broccoli-sourcemap-concat # not sure why that's getting outdated glob
npm explore ember-cli -- npm i glob@latest -S
npm explore ember-cli -- npm i bower

And then npm ls once again reports a clean bill of health.

If I remember correctly, ember-cli bundles its dependencies, so probably there needs to be a fix in ember itself to make this happen?

I'd recommend adding a prepublish script to ember's package to run npm ls, so that nothing can be published with invalid dependencies.

@raytiley
Member
raytiley commented Mar 5, 2015

@isaacs thanks for all the help. Sorry this has been such a pain. Emberconf just wrapped up and most of the people that would jump on fixing this are at the conference, traveling, or in meetings. I'm doing the best I can to wrap my head around what is locked on what versions.

From what I understand certain modules need to have glob locked down (broccolijs/broccoli-kitchen-sink-helpers#27) because there is currently no follow all option for symlinks (isaacs/node-glob#139).

Currently if we don't lockdown rimraf to 2.2.8 it causes our CI to fail. We definitely want to get the latest versions of glob / rimraf compatible. Just figuring out the best way to make that happen quickly

@fivetwentysix

@raytiley issue started ocuring again

@isaacs
isaacs commented Mar 5, 2015

@raytiley If you can't lock down glob, then re-install rimraf in there, so that it will pull in its own copy of glob.

@isaacs
isaacs commented Mar 5, 2015

@raytiley Basically, if you make all the npm ls warnings go away, then everything works fine.

@rwjblue
Contributor
rwjblue commented Mar 5, 2015

@isaacs - We cannot use latest glob (4.3+ vs 4.0.5) because the symlink following behavior was changed, and Broccoli depends on the (then stable and supported) behavior of glob to match things nested in symlinked folders.

Some detail links:

@isaacs
isaacs commented Mar 5, 2015

@rwjblue Sure, in that case, you can have Broccoli install rimraf, and that'll pull in a copy of glob that works. The problem is that ember-cli ships a bunch of bundled dependencies that are explicitly broken, according to their authors. Resolve those warnings, and this bug disappears.

@raytiley
Member
raytiley commented Mar 5, 2015

@isaacs I apologize if I'm being thick here, but the problem persists even without the bundled dependencies. I'm currently have ember-cli linked locally. And there are no warnings when running npm ls

ember-cli ((detached from v0.1.15)) ⚑︎ npm ls glob
ember-cli@0.1.15 /Users/raytiley/code/ember-cli
β”œβ”€β”¬ broccoli@0.13.3
β”‚ └─┬ findup-sync@0.1.3
β”‚   └── glob@3.2.11 
β”œβ”€β”¬ broccoli-caching-writer@0.5.1
β”‚ └─┬ rimraf@2.3.1
β”‚   └── glob@4.4.2 
β”œβ”€β”¬ broccoli-es6modules@0.5.1
β”‚ β”œβ”€β”¬ broccoli-caching-writer@0.5.3
β”‚ β”‚ └─┬ rimraf@2.3.1
β”‚ β”‚   └── glob@4.4.2 
β”‚ └─┬ esperanto@0.6.17
β”‚   └─┬ sander@0.2.2
β”‚     └─┬ rimraf@2.3.1
β”‚       └── glob@4.4.2 
β”œβ”€β”¬ broccoli-funnel@0.2.2
β”‚ └─┬ rimraf@2.3.1
β”‚   └── glob@4.4.2 
β”œβ”€β”¬ broccoli-sourcemap-concat@0.4.3
β”‚ └─┬ broccoli-caching-writer@0.5.3
β”‚   └─┬ rimraf@2.3.1
β”‚     └── glob@4.4.2 
β”œβ”€β”¬ fs-extra@0.12.0
β”‚ └─┬ rimraf@2.3.1
β”‚   └── glob@4.4.2 
β”œβ”€β”€ glob@4.0.5 
β”œβ”€β”¬ mocha@1.21.5
β”‚ └── glob@3.2.3 
β”œβ”€β”¬ mocha-jshint@0.0.9
β”‚ └─┬ jshint@2.6.3
β”‚   └─┬ cli@0.6.5
β”‚     └── glob@3.2.11 
β”œβ”€β”¬ npm@2.1.8
β”‚ └── glob@4.0.6 
β”œβ”€β”¬ testem@0.6.39
β”‚ β”œβ”€β”¬ fileset@0.1.5
β”‚ β”‚ └── glob@3.2.11 
β”‚ β”œβ”€β”€ glob@4.4.2 
β”‚ └─┬ tap@0.5.0
β”‚   └── glob@3.2.11 
└─┬ yuidocjs@0.3.50
  └─┬ rimraf@2.3.1
    └── glob@4.4.2 

If I do an ember new then rm -rf node_modules and do a fresh npm install I get warnings. The bundled dependencies shouldn't be playing any part here right?

poo (master) ⚑︎ npm ls glob
npm WARN unmet dependency /Users/raytiley/poo/node_modules/ember-cli/node_modules/broccoli-caching-writer/node_modules/rimraf requires glob@'^4.4.2' but will load
npm WARN unmet dependency /Users/raytiley/poo/node_modules/ember-cli/node_modules/glob,
npm WARN unmet dependency which is version 4.0.5
npm WARN unmet dependency /Users/raytiley/poo/node_modules/ember-cli/node_modules/broccoli-es6modules/node_modules/broccoli-caching-writer/node_modules/rimraf requires glob@'^4.4.2' but will load
npm WARN unmet dependency /Users/raytiley/poo/node_modules/ember-cli/node_modules/glob,
npm WARN unmet dependency which is version 4.0.5
npm WARN unmet dependency /Users/raytiley/poo/node_modules/ember-cli/node_modules/broccoli-es6modules/node_modules/esperanto/node_modules/sander/node_modules/rimraf requires glob@'^4.4.2' but will load
npm WARN unmet dependency /Users/raytiley/poo/node_modules/ember-cli/node_modules/glob,
npm WARN unmet dependency which is version 4.0.5
npm WARN unmet dependency /Users/raytiley/poo/node_modules/ember-cli/node_modules/broccoli-sourcemap-concat/node_modules/broccoli-caching-writer/node_modules/rimraf requires glob@'^4.4.2' but will load
npm WARN unmet dependency /Users/raytiley/poo/node_modules/ember-cli/node_modules/glob,
npm WARN unmet dependency which is version 4.0.5
poo@0.0.0 /Users/raytiley/poo
β”œβ”€β”¬ broccoli-asset-rev@2.0.1
β”‚ └─┬ broccoli-filter@0.1.11
β”‚   └─┬ broccoli-kitchen-sink-helpers@0.2.6
β”‚     └── glob@4.0.4 
β”œβ”€β”¬ broccoli-ember-hbs-template-compiler@1.7.0
β”‚ └─┬ broccoli-filter@0.1.11
β”‚   └─┬ broccoli-kitchen-sink-helpers@0.2.6
β”‚     └── glob@4.0.4 
β”œβ”€β”¬ ember-cli@0.1.15
β”‚ β”œβ”€β”¬ broccoli@0.13.3
β”‚ β”‚ └─┬ findup-sync@0.1.3
β”‚ β”‚   └── glob@3.2.11 
β”‚ β”œβ”€β”¬ broccoli-caching-writer@0.5.1
β”‚ β”‚ └─┬ broccoli-kitchen-sink-helpers@0.2.6
β”‚ β”‚   └── glob@4.0.4 
β”‚ β”œβ”€β”¬ broccoli-es6modules@0.5.1
β”‚ β”‚ └─┬ broccoli-kitchen-sink-helpers@0.2.6
β”‚ β”‚   └── glob@4.0.4 
β”‚ β”œβ”€β”¬ broccoli-sourcemap-concat@0.4.3
β”‚ β”‚ └─┬ broccoli-kitchen-sink-helpers@0.2.6
β”‚ β”‚   └── glob@4.0.4 
β”‚ β”œβ”€β”€ glob@4.0.5  invalid
β”‚ β”œβ”€β”¬ npm@2.1.8
β”‚ β”‚ └── glob@4.0.6 
β”‚ └─┬ testem@0.6.39
β”‚   β”œβ”€β”¬ fileset@0.1.5
β”‚   β”‚ └── glob@3.2.11 
β”‚   β”œβ”€β”€ glob@4.3.5 
β”‚   └─┬ tap@0.5.0
β”‚     └── glob@3.2.11 
β”œβ”€β”¬ ember-cli-6to5@3.0.0
β”‚ β”œβ”€β”¬ broccoli-6to5-transpiler@3.0.0
β”‚ β”‚ └─┬ 6to5-core@3.6.5
β”‚ β”‚   └─┬ regenerator-6to5@0.8.10-1
β”‚ β”‚     └─┬ commoner@0.10.1
β”‚ β”‚       └── glob@4.2.2 
β”‚ └─┬ broccoli-filter@0.1.11
β”‚   └─┬ broccoli-kitchen-sink-helpers@0.2.6
β”‚     └── glob@4.0.4 
β”œβ”€β”¬ ember-cli-qunit@0.3.7
β”‚ └─┬ broccoli-jshint@0.5.3
β”‚   β”œβ”€β”¬ broccoli-filter@0.1.11
β”‚   β”‚ └─┬ broccoli-kitchen-sink-helpers@0.2.6
β”‚   β”‚   └── glob@4.0.4 
β”‚   β”œβ”€β”¬ findup-sync@0.1.3
β”‚   β”‚ └── glob@3.2.11 
β”‚   └─┬ jshint@2.5.11
β”‚     └─┬ cli@0.6.5
β”‚       └── glob@3.2.11 
└── glob@4.4.2 

npm ERR! invalid: glob@4.0.5 /Users/raytiley/poo/node_modules/ember-cli/node_modules/glob

Thanks again for being so helpful.

@rwjblue
Contributor
rwjblue commented Mar 5, 2015

@isaacs

@rwjblue Sure, in that case, you can have Broccoli install rimraf, and that'll pull in a copy of glob that works. The problem is that ember-cli ships a bunch of bundled dependencies that are explicitly broken, according to their authors.

The usage of rimraf is not by Broccoli itself, so Broccoli cannot lock it down. The Broccoli helper API is setup roughly so that the consumer of Broccoli instantiates "helpers" that do the actual work. All of those helpers have their own versions of rimraf which may or may not be permissive enough to grab the new version that is invalid in our use case.

Resolve those warnings, and this bug disappears.

The warnings are not the fundamental issue, the warnings are basically indicating that we are forcing the glob package (and now rimraf) to a specific version because (to my knowledge) the glob package does not actually follow semver (it matches the Bash version) so comparing versions via semver package is incorrect...

@stefanpenner
Contributor

The problem is that ember-cli ships a bunch of bundled dependencies that are explicitly broken, according to their authors.

@isaacs I'm curious how bundledDependencies suddenly break, don't they remain fixed or are they considered when dedupe happens.

Sudden failures do to instability in the larger ecosystem are extremely costly, short of shipping people a primed tarbal of npm/node/node_modules I am at a loss for how to improve the current state of things.

We had once talked, and you described ember-cli as more of an app distributed by npm rather then a typical module, hence our use of bundledDependencies. My question is, should we actually take this one step further and actually just distributed it outside of npm?

Anyways, I would like to work with you and the rest of NPM to help sort out some of out pains.

@isaacs
isaacs commented Mar 6, 2015

@rwjblue The glob package follows SemVer. It matches Bash 4.3, the fact that it is also in the 4.x version cycle is indicative of the number of breaking API changes that have been made to it over the years, it's just a coincidence.

The usage of rimraf is not by Broccoli itself, so Broccoli cannot lock it down.

Fair enough. Whatever the case, somehow a version of rimraf is installed that does require('glob') and the glob that it's being given is not the glob it wants. The warnings from npm ls are indicative of this fact.

The core bug in rimraf and glob has already been fixed. What's left to do is stop serving rimraf a known-broken version of glob. I could also back-port the broken-symlink fix to every prior version of glob, but that is costly and dangerous, since the code has changed quite a bit since then, and even still, it won't help things without shipping a new ember-cli.


So, here's where things stand now. I'm not entirely certain where the bug is coming from, but it'd be great to comb out some of this mess.

When I do ember new app, I get a broken node_modules setup. However, when I cd into that folder, and delete the modules folder, and run npm i to install from the package.json file, I see a bunch of errors all stemming from one issue. At the very least, it seems surprising to me that I get completely different stuff in node_modules based on which of those approaches I use. What is ember-cli doing when you type ember new app? It says it's fetching stuff from npm, is it using npm to do that?

In the world where I npm install from the generated package.json file, I see this:

  1. ember-cli has a bundleDependency on glob, which in the latest publish is at version 4.0.5.
  2. ember-cli also depends on a few things that depend on new versions of rimraf, it seems like npm isn't noticing at install time that the glob@4.0.5 is invalid or something?

npm/npm#7552 is the npm issue to investigate the npm part of it.

@stefanpenner
Contributor

It says it's fetching stuff from npm, is it using npm to do that?

yes, it is invoking NPM, but a quick look indicates we aren't using the latest version.

https://github.com/ember-cli/ember-cli/blob/master/package.json#L128

let me update this.

@rwjblue
Contributor
rwjblue commented Mar 6, 2015

@isaacs - I disagree that glob follows SemVer (if it did then it should not have had breaking changes from 4.0.0 until 5.0.0), but it is not useful to debate globs versioning system in this issue, I am sorry for that silly diversion.

@rwjblue
Contributor
rwjblue commented Mar 6, 2015

The issue reported here (getting the EEXISTS error) is temporarily resolved with #3428, by locking glob@4.0.5 and rimraf@2.2.8. I will try to fix the last blocking issue for 0.2.0 final in the next hour or so, and release it.

@isaacs
isaacs commented Mar 6, 2015

@rwjblue "Breaking changes" mean changes that alter the API surface such that previously intended behavior is no longer intended. It's not just "any change to existing behavior".

If a software program does not behave as intended and documented, then bringing the behavior into alignment with the documented intent is not a "breaking change" is it "fixing a bug". It is inevitable that users of a piece of software will occasionally come to depend on unintended, undefined, or incorrect behavior, and when the bug is corrected, this may have unfortunate consequences. But that does not mean that the letter or spirit of SemVer has been violated.

All of the libraries I maintain, including glob, "follow SemVer". I helped with the specification, and wrote the implementation we're all using. I feel very strongly about it. The explicit goal of glob 4.x was to match the behavior of Bash 4.3, and it has taken a few releases to get closer and closer to that goal. Most recently, I made a change to match broken symlinks. If anyone was depending on that bug, then they would be disappointed, and perhaps call it a "breaking change". But it is a bugfix, as was the change to have it not continue down cyclical symlinks until ELOOP.

I'd also rather not have an in-depth back and forth on the subtleties of SemVer in an unrelated issue thread, so this is the last I'll say on it.

@rwjblue
Contributor
rwjblue commented Mar 6, 2015

@isaacs - We have similar but slightly different interpretations (which is totally fine), again I apologize for derailing.

@neo-tahi
neo-tahi commented Mar 6, 2015

To summarize:

@raytiley and myself are both having this problem still at this time, even though we have followed the most recent fix instructions (#3413 (comment) via isaac), it seems due to broccoli and the new glob not playing nice: #3413 (comment) via rwjblue .

@raytiley does this sound like a decent summary of where we are so far?

Thanks everyone!

@isaacs
isaacs commented Mar 6, 2015

It is not a trivial change (requires setting an option) but glob 4.5.0 now allows you to set { follow: true } to follow all symlinked dirs in ** matches.

@rwjblue
Contributor
rwjblue commented Mar 6, 2015

@isaacs - Thank you very much! I will begin reviewing and updating all of our dependencies that use rimraf and/or glob to the latest version...

@AthinaB AthinaB added a commit to olgabrani/synnefo that referenced this issue Mar 6, 2015
@AthinaB AthinaB Add rimraf and a more recent version of jQuery
Rimraf is used in order to sovle this issue:
ember-cli/ember-cli#3413
ae66b0f
@toranb
Contributor
toranb commented Mar 6, 2015

@rwjblue just to confirm (as I'm trying to upgrade now and having the same issues mentioned above) -what deps should I update/add/change to get ember-cli 2.0 beta 1 working?

@abuiles
Member
abuiles commented Mar 6, 2015

@toranb "glob": "^4.0.5" should get you going.

@toranb
Contributor
toranb commented Mar 6, 2015

@abuiles I currently did glob ^4.0.5 and rimraf 2.3.1 (seems to work currently minus other node-sass issues I'm having)

@egardner
egardner commented Mar 7, 2015

Like @toranb I had the same problems on a fresh Ember-CLI install today, and was able to get the server working by adding "rimraf":"2.3.1" to the main dependencies in package.json. Glob is at ^4.0.5.

@bhoskins
bhoskins commented Mar 7, 2015

I followed mariozig s suggested steps and got rid of this error. Thanks so much!
➜ mustache git:(develop) βœ— ember --version
version: 0.2.0-beta.1
node: 0.12.0
npm: 2.1.8

os: Yosemite 10.10.2
1- Updated package.json with:

"dependencies": {
"rimraf": "2.2.8"
},
2- ➜ mustache git:(develop) βœ— rm -rf node_modules tmp dist && npm cache clean

3- ➜ mustache git:(develop) βœ— ember install

@Katamo
Katamo commented Mar 8, 2015

Confirmed.
I added "rimraf": "2.2.8" to my depedencies.json
Do an sudo npm install
And then execute in "sudo" mode : sudo ember server

That do the trick for me.

FYI:
ember --version

version: 0.2.0-beta.1
Could not find watchman, falling back to NodeWatcher for file system events
node: 0.10.32
npm: 2.1.8

Thank you all guys!

@leepfrog
leepfrog commented Mar 8, 2015

btw, i just encountered this on 0.2.0-beta.1 as well. updating the glob package in ember-cli to ^4.4.2 did the trick (as suggested in #3426 ).

@brzpegasus brzpegasus added a commit to brzpegasus/ember-nw-markdown that referenced this issue Mar 8, 2015
@brzpegasus brzpegasus npm upstream dependency issue (ember-cli/ember-cli#3413) bc75000
@ZenCocoon
Contributor

@leepfrog Thanks, "glob": "^4.4.2" works good for me as well but still need to force "rimraf": "2.3.1" as well.

  "devDependencies": {
    ...
    "glob": "^4.4.2"
  },
  "dependencies": {
    "rimraf": "2.3.1"
  }
@rwjblue
Contributor
rwjblue commented Mar 9, 2015

This should be resolved with 0.2.0.

@rwjblue rwjblue closed this Mar 9, 2015
@e-karma
e-karma commented Mar 9, 2015

I don't think it's resolved... I just struggled with same issue for 3+ hours.. changing Glob 4.05 => 4.4.2 did it for me just now.. and without rimraf; for now

@rwjblue
Contributor
rwjblue commented Mar 9, 2015

@e-karma - 0.2.0 was released less than 15 minutes ago (right when I commented). Can you try again?

@e-karma
e-karma commented Mar 9, 2015

uninstall/reinstall ember-cli @ 0.2.0 w/ same deps?

@adamsrog
adamsrog commented Mar 9, 2015

Confirmed - upgrading a project to ember-cli 0.2.0 has resolved this issue. I removed the rimraf dependency from package.json too.

Also confirmed that creating a fresh project doesn't encounter this issue either.

However, ember serve throws this warning:

The package `ember-data` is not a properly formatted package, we have used a fallback lookup to resolve it at `/Users/adamsrog/Workspace/rog/test-app/node_modules/ember-data`. This is generally caused by an addon not having a `main` entry point (or `index.js`).

Thanks @rwjblue (and everyone else involved)!

@francirp
francirp commented Mar 9, 2015

+1 @adamsrog. Confirmed that upgrading to ember-cli 0.2.0 has resolved this issue but also getting the ember-data warning. Thanks!

@goneflyin goneflyin added a commit to goneflyin/stockinfo that referenced this issue Mar 9, 2015
@goneflyin goneflyin Workaround for Ember-CLI issue: ember-cli/ember-cli#3413 d920e72
@nhan nhan added a commit to tonysherbondy/datadrawer that referenced this issue Mar 9, 2015
@nhan nhan Workaround for ember-cli bug 6cfe912
@stefanpenner
Contributor

but also getting the ember-data warning. Thanks!

ya that's expected, we will support this until 0.3.x at which time we will stop supporting it, but we will make sure ember-data is updated accordingly.

This was referenced Mar 10, 2015
@Danfitek

I've tried upgrading to ember-cli 0.2.0 , Glob 4.4.2, and both versions of rimraf 2.2.8 and 2.3.1. I still get this error that the temp file exists.

@rwjblue
Contributor
rwjblue commented Mar 11, 2015

@Danfitek - You should use glob@4.0.5 and rimraf@2.2.8, those are both specified by ember-cli in 0.2.0, but if you have added them manually to your project you will need to use these versions.

@lolmaus
Contributor
lolmaus commented Mar 11, 2015

@Danfitek, ember-cli@0.2.0, glob@4.0.5 and rimraf@2.2.8. Also try removing glob and rimraf from your package.json.

@Danfitek

@rwjblue and @lolmaus Thanks but I still can't get it working. I've tried specifying those versions of glob and rimraf in my package.json and also leaving them out of it. I've uninstalled them and reinstalled them. I'll keep trying.

@lolmaus
Contributor
lolmaus commented Mar 11, 2015

@Danfitek, are you restarting your Ember CLI dev server?

@Danfitek

Hi guys. I followed the full set of steps for upgrading ember-cli version (uninstall, clear caches, install, init...) https://github.com/ember-cli/ember-cli/releases and also restarted my machine. I also installed Watchman. It works perfectly now. It could have been any one of those steps. Thanks.

@aymerick aymerick added a commit to aymerick/kowa-client that referenced this issue Mar 16, 2015
@aymerick aymerick Fixes ember-cli/ember-cli#3413 286c802
@iRonin
iRonin commented Jul 13, 2015

If you encounter this issue with ember-cli-rails check Multiple (web server) workers cause multiple build servers and race conditions

@kvz kvz added a commit to kvz/jekyll-fix-titlecase that referenced this issue Sep 21, 2015
@kvz kvz Upgrade node dependencies
- inherits update
- v3.2.2
- lockfile@2
- v3.2.3
- Remove optional graceful-fs dependency
  See tapjs/node-tap#85
- v3.2.4
- use fs, not graceful-fs
- v3.2.5
- fix tests
- v3.2.6
- new Glob: options are optional, even with cb
  Fix #77
- v3.2.7
- regenerate test fixture
- Emit match events marked with / for dirs
  Close #81
  Close #82
  Thanks @cowboy @isaacbw
- v3.2.8
- Assert that match is never emitted after end
  Re comments from @cowboy in #81
- Mark appropriately, without premature end
  Fix #83
  Do the stat() call only when necessary, right before emitting the event
  and then moving on to the next item (or EOF) in the queue.
- v3.2.9
- minimatch@latest
- v3.2.10
- don't use ^ for version
- v3.2.11
- Use ^ for minimatch version
- v4.0.0
- Don't use 0.8 with travis
- set debug based on NODE_DEBUG env
- Fix #88 Don't fail to return on empty/comment patterns
- v4.0.1
- Ensure callback is not called multiple times on error
  Fix #85
- once-ify the callback
- regenerate test fixtures
- fix incorrect root on windows
- v4.0.2
- optionally depend on graceful-fs 3.x
- v4.0.3
- test: fix double-require fs
- Fix negation bug
  This addresses the bug where starting a pattern with ! was not
  respecting negation.
  Fixes #62
  Fixes #105
- run test fixture regeneration
- Support use-strict by moving function def out of while loop
- Ignore node_modules
  Ensure node_modules/ doesn't get checked in by mistake
- v4.0.4
- bump minimatch
- bump minimatch
- isc license
- v4.0.5
- replace outdated warning with awesome gif
- re #116: Make graceful-fs a proper dependency
- v4.0.6
- include funny gif in test fixture
- failing test and TODO comments for updated Bash 4.3 globstar behavior
- refactor _process into less unreasonable bits
- remove depth/maxDepth options
  Glob just goes until hiting ELOOP right now anyway, and
  once Bash 4.3 style behavior is implemented, the depth
  will be an even less necessary guard for globstars.  It
  already is unnecessary for non-globstar globs.
- Bash 4.3 globstar behavior
  This also organizes a lot of stuff and de-duplicates some of the
  de-duplication logic that was happening before.
  The logic for handling globstar directory traversals (and avoiding
  directory traversals for symlinked dirs) is not particularly
  optimized.  In fact, I'd be surprised if this change was not a
  pretty significant performance regression in general.  But at least
  it's more correct, so now we can start analyzing the performance
  and optimizing where it makes sense without becoming even more
  committed to incorrect behavior.
- benchmark care of @joliss
- Add benchmark/profiling scripts and fixture stuff
- add oh-my-glob.gif to npmignore to reduce package size
- Add CI build status and dependencies info in readme
- fix profile script cd
- Add contribution info
- Move sync glob function into separate class
  Step 1 of zalgo removal.
  Makes sync glob a bit faster, but I suspect that it'd be faster yet to
  just stat stuff rather than detect directories via a failed readdir,
  since the cost of error object creation and GC might be too heavy.  More
  profiling and investigation is needed.
  Before:
      $ npm run bench
      ...
      Node glob.sync timing:
      100000
      real	0m28.484s
      user	0m21.532s
      sys	0m3.331s
      Node glob async timing:
      100000
      real	0m39.003s
      user	0m29.359s
      sys	0m6.753s
  After:
      Node glob.sync timing:
      100000
      real	0m11.541s
      user	0m8.832s
      sys	0m1.665s
      Node glob async timing:
      100000
      real	0m38.648s
      user	0m29.320s
      sys	0m6.421s
  So, this cuts out about half of the time which was mostly being spent in
  silly function-wrapping and poorly factored code.
  Re #78
- move common functions into common.js
- prefer multivar to leading comma
- consistent semis
- remove deprecated bits
  That was from waaayyyy back in version 2.0.
- Refactor async glob, tests passing
- just use regular fs
  The only thing we use fds for in this util is readdir, and
  it's already cached and inflight-guarded anyway.
- put benchmark script in TMPDIR instead of project
  Too tedious to continually switch back and forth between tests and
  profiling
- GlobStar: Don't leave lstat information on the table
  This speeds up the ** benchmark considerably, by removing a LOT
  of unnecessary stats and readdirs.
- the return of pause/resume
- quieter pause/resume test
- Merge branch 'splitsync'
  Merging as --no-ff since there was a removal of the pause/resume along
  the way and some other unnecessary breaking stuff.  Also, this is a
  major refactor.
  Even though no behavior *should* have changed, the performance
  improvement is so major I'm considering bumping the major version number
  on general principle, since the extreme speed increase might break
  programs.
  Fix #78
- v4.1.0
- add inflight dep
- v4.1.1
- v4.1.2-beta
- sync: throw if cb provided
  Fixes confounding bug in #128.
- v4.1.2
- Properly return results from sync mark:true globs
  Fix #129
- v4.1.3
- Use manual iteration rather than Array.map. Tiny perf bump.
- only include needed files in npm publish
- remove graceful-fs
- quieter test
- Fixed accidental global var in _readdir
- Add test for global leakage, and catch another leaked global
- v4.1.4
- fix stat event not having the stat
- test for stat object return
- global-leakage test
- v4.1.5
- No need to ignore benchmark-fixture
  Benchmark fixture is placed in TMPDIR now.
- Better documentation
- handle globstar symlinks the same as Bash 4.3
  Fixes #135
- v4.1.6
- Add nodir flag
  Fix #121
- do nothing after abort() is called
- add glob.hasMagic function
- add some missing options and info to the doc
- v4.2.0
- has-magic test
- v4.2.1
- Fixed a misspelling in the README.
- Remove second copy of `nocase` option notes
  There were two copies of the `nocase` option documentation with two different wordings for the same thing. Removed one of them, the one which seemed less polished.
- Use localeCompare for sorting strings
  The better to unicode
- Sort readdir results
  Fix #143
- v4.2.2
- Use minimatch 2.x
- v4.3.0
- Corrected four minor typos in README.md
  Line 34: soΒ `a{/b/c,bcd}`Β would expand intoΒ `a/b/c`Β andΒ `abc*d*\.
  Line 39: Matches 0 or more characters in a sin*g*le path portion
  Line 103: glob.hasMagic(patter*n*, [options])
  Line 134: Create a Glob object by instanti*ati*ng theΒ `glob.Glob`Β class.
- Bump minimatch dep
  Fixes #145
- Fix non-deterministic test
- v4.3.1
- Make nocase-nomagic test pass on Windows
  Just normalize slashes for justice.
- make all tests pass on windows
- Correct slash behavior for dirs passed as pattern
- v4.3.2
- Settle on single quotes
- make readdir-order test deterministic
- v4.3.3
- test setup remove npm-debug.log file
- Revert "Sort readdir results"
  This reverts commit bbaa547a9bd695ca71b6f1c40d6423acae1d1eef.
  Rationale:
  isaacs/node-glob#143 (comment)
- v4.3.4
- Merge pull request #138 from mikeobrien/readmetweak
  Fixed a misspelling in the README.
- Merge pull request #141 from benhutchins/patch-1
  Remove second copy of `nocase` option notes
- use newer tap
- v4.3.5
- New: Added ignore option (fixes #115)
- ignore tests DRY-up
  Just list the cases, and then do them all async and sync
- Ignore code cleanup and factoring
- v4.4.0
- Provide ref to #167 in 'callback provided to sync' error
- v4.4.1
- Fix broken symlink handling
  Root cause isaacs/rimraf#65
  Root cause ember-cli/ember-cli#3413
  Root cause Rich-Harris/sander#1
  Fix #170
- v4.4.2
- note about deprecation of {sync:true} option in favor of glob.sync() method
- Add 'follow' option to follow directory symlinks in ** matches
  Fix #139
- Remove extra stat in mark/stat end flow
  This also is an annoying race condition that delays the 'match'
  event unnecessarily in many cases.
- Always cache based on absolute path
  This was resulting in some weird behavior especially in the ignore
  case, and sometimes causes 'mark' to not detect dirs properly.
  It's also a blocker for doing realpath and marking together, since
  otherwise it can't tell that it's already statted a particular dir.
- FIXUP follow test
- Realpath support
  Close #148
  Close #142
- Properly exclude files from /-ending patterns
  When the cwd was set, it'd change the absolute path to always be
  slash-free, so filtering based on `/` at the end of a pattern wasn't
  working.
  Fix #158
- v4.5.0
- Deprecate comments and negation
- v5.0.0
- test: Merge mark, add sync nodir, failing cases for #174
- Fix nodir/mark regression from absolute-ifying cache keys
  Fix #174
- v5.0.1
- Ensure that cache keys are always absolute paths
  This would have prevented the regression introduced in 4.5.0 in mark and
  nodir being used in conjunction with cwd.
- Fix for 0.10, where path.isAbsolute is not exposed
- test: nonull failing cases for #176
- Fix nonull regression (fixes #176)
- v5.0.2
- doc fixup: remove duplicate mention of statCache
- fix interaction between realpath and cwd options
  Fix #181
- v5.0.3
- use `path-is-absolute` polyfill module
  It's the same code as `path.isAbsolute()` in Node 0.12 and iojs.
  https://github.com/sindresorhus/path-is-absolute
- v5.0.4
- quote the versions in .travis.yml so they're matched correctly
  The current one matches Node `0.1` and `0.11`.
  Also test on `iojs`.
- v5.0.5
- Better global detection
  Newer versions of node-tap don't create a TAP_Global_Harness global
- tap 1.x
- v5.0.6
- Don't lose weird readdir errors
  Fixes #197
- v5.0.7
- test-regen
- v5.0.8
- reduce cases where tests need to be regenerated
- v5.0.9
- Test base-matching
- add more sync cb thrower tests
- ignore .nyc_output, upgrade tap, use coverage, rm fixtures
- v5.0.10
- Remove duplicate option description
  `nonull` was listed twice in the options descriptions.
- Use graceful-fs if available
- v5.0.11
- Revert "Use graceful-fs if available"
  This reverts commit f09292b72c58b03416dbc60230aa2647ba47daec.
- v5.0.12
- Do not emit 'match' events for ignored items
  Fix #194
- v5.0.13
- Treat ENOTSUP like ENOTDIR in readdir
  Fix #205
- Fix some 'use strict' errors
- Use js for benchmark cleanup
  Fix #199
- Generate fixtures more effectively, with -O instead of eval
- Test for when readdir raises ENOTSUP
  Treat as if it had raised ENOTDIR instead.
- Handle ENOTSUP for sync glob as well as async
  Hopefully fix #208.  At any rate, a better test that verifies it's doing
  what it claims to be doing.
- v5.0.14

- Merge pull request #1860 from megawac/memoize-lu
  Only coerce address to a string once
- Quote reserved word property names in tests
- Update _.map docs for consistency with _.each
- Merge pull request #1863 from acgessler/patch-2
  Update _.map docs for consistency with _.each
- Make _.uniq work with sorted = true and an iteratee. Fixes #1866
- Merge pull request #1867 from akre54/sorted-uniq-with-iteratee
  Make _.uniq work with sorted = true and an iteratee
- use _.contains in _.uniq instead of indexOf
- Merge pull request #1868 from akre54/uniq-contains
  use _.contains in _.uniq instead of indexOf
- Simplify flatten implementation and add startIndex to syntax
- Use flatten and omit and pick
- Flatten supports null; Loop instead of push.apply
- Merge pull request #1685 from megawac/flatten
  Rework internal flatten function
- indexOf and lastIndexOf simplifications
- Merge pull request #1876 from megawac/indexof-s
  indexOf and lastIndexOf simplifications
- Fixes #1883 β€” hides _.iteratee behind a veil of silence...
- variable/property distinction for improved API/test clarity.
  Using the same letters "moe" for variable name and property value was a bit confusing upon my initial reading of _.property's functionality.
  Altering the variable name "moe" to "stooge" eliminates the potential for confusion arising due to polysemy.
  Similar docs and related tests were likewise updated.
  Conflicts:
  	index.html
  	test/utility.js
- remove right-hand-side alignment spacing for non-assignment statement pair
- Merge pull request #1507 from rck109d/master
  documentation: improved clarity with variable/property distinction
- Change _.noConflict doc text to monospace format
- Release func in _.before and _.once
- Merge pull request #1894 from dimitriwalters/master
  Change _.noConflict doc text to monospace format
- Merge pull request #1895 from zertosh/fix-once-before-leak
  Release func in _.before and _.once
- Update index.html
- Update index.html
- Update _.template docs.
- Merge pull request #1899 from braddunbar/interpolate-values
  Update _.template docs.
- Partial support for constructors
- Merge pull request #1733 from megawac/partial-constructor
  Partial support for constructors
- Result fallback can be a function
- Merge pull request #1900 from megawac/result-fallback-fn
  Result fallback can be a function
- Revert "Result fallback can be a function"
  This reverts commit b8a07d1d94cd6d4586e89a63fda41f2814dc63ce.
- Merge pull request #1897 from ankurp/master
  Including Swift Port in Links & Suggested Reading
- Iteratee: don't make assumptions on # args to pass
- Unrevert "Result fallback can be a function" PR #1900
  This reverts commit 40e8517c8318553ec94b656a6b829d4768c1e046.
- Implement findKey and findIndex helpers
- find*: style tweak and test coverage
- Merge pull request #1587 from megawac/find-index
  Add _.findKey and _.findIndex
- move _.before gc conditional to a single line
- check for array length when evaluating isSorted
- removed tabs to conform with coding style
- Merge pull request #1917 from tjbarber/avoid-returning-zero-truthy-isSorted
  Fixes #1870: _.indexOf with `isSorted` of `true` will incorrectly match `undefined` on an empty array.
- Added _.propertyOf method and tests
- Used function(){} in place of _.noop
- Merge pull request #1921 from bathos/master
  Added _.propertyOf method
- Add _.keysIn method
- Merge pull request #1910 from thejameskyle/keysIn
  Add _.keysIn method
- Create _.assign function
- Merge pull request #1902 from megawac/iteratee-args
  Iteratee: don't make assumptions on # args to pass
- Kill the result var in isEqual
- Merge pull request #1934 from megawac/sans-result
  [minor] Clean up _.isEqual for objects and arrays
- Optimize isFunction only when appropriate.
  Closes #1929.
- Move sortedIndex tests from comparitors -> array tests
- Fix changelog for _.escape
- Merge pull request #1940 from unrealsolver/master
  Fix changelog for _.escape: function no longer escapes slash '/'
- missing new on a typeerror
- Merge pull request #1908 from thejameskyle/assign
  Add _.assign function
- Test typed arrays are functions
- Add _.create method
- Merge pull request #1907 from thejameskyle/create
  Add _.create method
- Alias? includes as contains
- Merge pull request #1955 from megawac/includes
  Alias? includes as contains
- Object-preserving map() function: mapValues
- Remove `reduce` error throwing
  Closes #1858.
- Support fromIndex in _.contains
- Improve invoke coverage
- Merge pull request #1963 from megawac/invoke-cov
  Improve invoke coverage
- Use a version of phantomjs that doesn't compain about SOP
  e.g. https://travis-ci.org/jashkenas/underscore/builds/43040393#L83
- Merge pull request #1962 from megawac/from-contains
  Support fromIndex in _.contains
- Adds a test case when we call _.pluck() to objects passing an undefined property as an argument.
- Merge pull request #1971 from shinnya/feature/add-pluck-test-case
  Adds a test case when we call _.pluck() to objects passing an undefined property as an argument.
- Add _.transform method
- better test method for missing properties in pluck
- Merge pull request #1961 from jridgewell/remove-reduce-errors
  Remove `reduce` error throwing
- Merge pull request #1936 from jridgewell/isFunction_safari_8
  Optimize isFunction only when appropriate.
- Minor cleanup of #1936
- Merge pull request #1974 from megawac/isFunction
  Update isFunction tests
- fix _.sortedIndex for large indexes
  fixes #1850
- Use partial for defer.
- Merge pull request #1977 from jridgewell/partial_defer
  Use partial for `_.defer`
- Clarify documentation.
- Merge pull request #1979 from robbiehudson/clarify_after_documentation
  Clarify documentation for _.after and _.before
- Merge pull request #1954 from deiwin/fix-sorted-index
  fix _.sortedIndex for large indexes
- Add installation instruction for Meteor
- fix eslint warnings
- revert dot-notation warnings
- Merge pull request #1987 from maxbeatty/fix-warnings
  fix eslint warnings
- fix typo
- Merge pull request #1989 from linkkingjay/master
  fix typo
- Merge pull request #1982 from uzumaxy/master
  Add installation instruction for Meteor
- Move sortedIndex to Array methods + some annoying files to gitignore
- Wrap redundant reduce and reduceRight code in helper
- Merge pull request #1901 from thejameskyle/transform
  Add _.transform method
- Merge looping implementation [needs benchmarks]
- Implement zip via unzip
- Invoke shouldn't throw for null or undefined
- Add _.comparator and align sortedIndex to sortBy
- Merge pull request #1939 from megawac/comparitors
  Add _.comparator and align sortedIndex to sortBy
- Reuse (optimized) reduce and reduceRight iteration
- Merge pull request #1994 from megawac/invoke-null
  Invoke shouldn't throw for null or undefined
- Revert "Merge pull request #1939 from megawac/comparitors"
  This reverts commit 5f52e5bc4ba98fdedac6703d2e1bbc46fa6cc66d, reversing
  changes made to 9924dba231366913acba8a3016823c403dca9ac3.
- Add engine proxy methods to toJSON, toString and valueOf
- Merge pull request #1991 from megawac/reduce-reuse
  Wrap redundant reduce and reduceRight code in helper
- Implement more rigid array like checks throughout library
- Update with changes from 1.7 to 1.8
- isEqual initialize stacks only if and when we need them
- Merge pull request #2013 from rndr/isEqualFix
  isEqual initialize stacks only if and when we need them
- Added example for _.sortBy( obj, string )
- Merge pull request #2014 from danielmbarlow/danielmbarlow-patch-1
  Added example for _.sortBy( obj, string )
- Add _.transform docs + address comments
- Readd _.object example
- Merge pull request #1993 from megawac/zip-via-unzip
  Implement zip via unzip
- Merge pull request #1990 from jashkenas/is-arraylike
  Implement a more rigid is length check
- Add iteration fixes of _.keys to _.isEmpty (fixes #1983, closes #1988)
  use current isEmpty obj way unless has enum bug
  check length beforehand to improve isEmpty perf
  add length check before type checks in isEmpty
  add test for non enum prop
  keep fixes isolated to as few areas as possible
  use inline comments
- Map partial instead of slice
- Merge pull request #2021 from jridgewell/map-partial
  Map partial's args instead of slicing
- Add check to createAssigner function so that _.defaults can use it (fixes #1984)
- Merge pull request #2022 from jmrog/devel
  Add check to createAssigner function so that _.defaults can use it (fixes #1984)
- Stop _.extend from turning dest obj's 'in' props into 'own props (fixes #2023)
- Add test for _.extend (no changing 'in' props to 'own' props; see bug #2023)
- Merge pull request #2024 from jmrog/extendFix
  Fix and test for _.extend (fixes #2023)
- Merge pull request #2003 from megawac/engine-proxy-methods
  Add engine proxy methods to toJSON, toString and valueOf
- Add _.findLastIndex and handle NaN in *IndexOf
- Cover argument cases for NaN
- Implement find*Index functions with helper
- Merge pull request #1981 from megawac/NaN-finding
  Add _.findLastIndex and handle NaN in *IndexOf
- Improve _.isFunction comment
- wrap constants or objects passed to _.times in _.constant
  so you can do stuff like this:
  _.times(3, 'Foo') // ['Foo', 'Foo', 'Foo']
  which can be useful for indenting text, for instance
  _.times(level, '  ').join('') + line
- added test for #2029
- bugfix, it's iteratee, not context that should be wrapped
- Merge pull request #2029 from gka/patch-1
  wrap constants or objects passed to _.times in _.constant
- Merge pull request #1953 from greenify/master
  Object-preserving map() function: mapValues
- Documentation for find{Index,LastIndex,Key} and mapValues
- Improve consistency of variable declarations
- Merge pull request #2030 from megawac/var-dec
  [minor] Improve consistency of variable declarations
- Add node.js 0.12 and io.js to travis.yml
- Remove several unneeded null checks
- Use isArrayLike in transform
- Merge pull request #2031 from megawac/null-check
  Remove several unnecessary null checks
- Run tests in node & phantom
- Merge pull request #2033 from jashkenas/node-testing
  Run test suite on node
- Update phantomjs version range
  For io.js ping #2032
- Merge pull request #2032 from demohi/patch-1
  Add node.js 0.12 and io.js to travis.yml
- Fixed copyright range to be updated to 2015
- Merge pull request #2034 from arianf/master
  Fixed copyright range to be updated to 2015
- Update _.range docs to clarify end is exclusive #2002
  I have updated the documentation for _.range to clarify explicitly that the end value _.range accepts is exclusive and the start value is inclusive. Attached is a screen shot of the changes:
  http://i.imgur.com/SIkBwUW.png
- Merge pull request #2035 from amZotti/master
  Update _.range docs to clarify end is exclusive [fix #2002]
- Update _.map docs to explain guarded iteratees
  I am a regular user of Underscore and only after reading through the Underscore source code did I learn about _.map being able to handle guarded functions as iteratees. If I have been unaware of guarded functions while using Underscore regularly then chances are there are many other engineers who are equally unaware of this great functionality.
- Add "Guarded" on _.map iteratee's [fix #2036]
  Certain underscore methods can be used as iteratee's to _.map. These
  methods can be referred to as 'Guarded' methods. In pull request #2036 I
  have requested that this functionality be included in the documentation
  for _.map on index.html. I am following up with that pull request with
  this one, which includes documentation that states exactly which methods
  are guarded methods.
  I am attempting to inform other Underscore developers of this great
  functionality by marking appropriate functions as "Guarded" within
  index.html. This "Guarded" statement uses the same CSS stylings as
  span.alias.
  Nothing has been changed besides the appropriate documentation shifts
  described above. Screenshots will be included in pull request.
- Refactor 'guarded' explanation into two lines
- Update QUnit to v1.17.1
- Merge pull request #2043 from amZotti/add-guarded-statements
  Add "Guarded" on _.map iteratee's [fix #2036]
- Reverts #2029.
- Add underscore-min.map to packaged files
- Merge pull request #2048 from cbguder/patch-1
  Add underscore-min.map to packaged files
- Refactor tests; don't install phantom by default; karma for browser tests
- Merge pull request #2054 from jashkenas/karma
  Refactor tests; don't install phantom by default; karma for browser tests
- Test against infinite loops when collection changes
- Merge pull request #2053 from megawac/length-testing
  Test against infinite loops when collection changes
- Update qunit-cli (devongovett/qunit-cli#11)
- Add proper Object function matches
  This takes `_.matches` and turns it into a proper Object function
  (takes the object as the first parameter). The should satisfy the
  performance problems seen in
  [jashkenas/backbone#3487](jashkenas/backbone#348
  7#issuecomment-75001423).
  I think it’s pretty apparent we jumbled the arguments originally. See
  the need to special case
  [`Backbone.Model#matches`](https://github.com/jashkenas/backbone/blob/ma
  ster/backbone.js#L390-L393) instead of auto proxying like the other
  [`_`
  methods](https://github.com/jashkenas/backbone/blob/master/backbone.js#L
  669-L680). We even have to special case
  [`Collection#matches`](https://github.com/jashkenas/backbone/blob/master
  /backbone.js#L917-L924) so we don’t kill performance doing simple
  `where`s.
  The legacy `_.matches(obj)` predicate matcher has been extracted into
  `_.matcher`. `_.matches` will return the predicate matcher if only one
  argument is provided. This legacy support should be removed in v2.0.
- Merge pull request #2057 from jridgewell/matches-matcher
  Add proper Object function matches
- Removing the iffy 'guarded' tags from the docs.
- removing repetitive 'guard check' comments
- Fixes #1915 -- _.clone doesn't do dates, regexes, other fancy things
- #2057 s/matches/isMatch+matcher
- 1.8-WIP ... still needs to be further reduced and cleaned
- merged 1.8 stuff
- /s/mapValues/mapObject and so on...
- working on docs etc
- I think we're ready?
- Ch-ch-ch-chaanges.
- Merge branch 'master' into gh-pages
- document isMatch, matcher
- Merge branch 'master' into gh-pages
- remove broken IE hack-arounds ... IE8 failing tests down to 14
- Fixing pick and omit for IE
- removing hokum from _.bind
- remove 'fasley' edge case tests
- removing bound constructor function fallback tests
- prepping 1.8.1 β€” tests are now fixed or killed.
- Revert "removing bound constructor function fallback tests"
  This reverts commit 9f25c2a42821acd1d80e3fde7f594051076d3ac2.
- Revert "removing hokum from _.bind"
  This reverts commit ba7b8f18dabb4ebb49e1f0c0076dc0b23b436878.
- Fix bound functions in IE8
- Merge pull request #2063 from jridgewell/ie8-bound-functions
  Fixes bound functions in IE8
- fixing previous commit for IE
- Underscore 1.8.1
- Merge branch 'master' into gh-pages
- Revert "remove broken IE hack-arounds ... IE8 failing tests down to 14"
  This reverts commit 5350a2ff3e362757f384c7c0096f24ad68c38fd0.
- no need to stoop...
- Merge branch 'master' into gh-pages
- Revert "remove 'fasley' edge case tests"
  This reverts commit ef3164fcad059434a95f0eb5ad48dba1999a5b62.
- Fix IE non-enumerable properties
  I’m not sure what we were doing before with the `FuncProto`…
- "fasley" to "falsey"
- Refine _.pick
- Merge pull request #2064 from jridgewell/ie-non-enumerable
  IE Non-Enumerable properties
- Merge pull request #2065 from jridgewell/refine-pick
  Refine _.pick
- Merge pull request #2066 from paulfalgout/ie-non-enumerable
  Fix object test wording "fasley" to "falsey"
- Avoid an arguments deopt
  https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#31-re
  assigning-a-defined-parameter-while-also-mentioning-arguments-in-the-bod
  y-typical-example
- Use async retries to avoid rare throttle false-negative
- Merge pull request #2069 from megawac/qunit-extras
  Use async retries to avoid rare throttle false-negative
- Simplify karma file
- 🎊 Karma Sauce Integration! πŸŽ†
  Fix travis keys
- Fix cherry-pick artifact
- Remove transform use due to 4f771e0a0
- Merge pull request #2068 from jridgewell/refine-pick
  Avoid an arguments deopt
- Rename extendOwn to assign
  β€œassign” is an ES6 standard, and naming should match it. Any dev who
  remotely follows ES will immediately recognize and understand what it
  does.
  Aliases `_.assign` to `_.extendOwn`, for 1.8.0 compatibility.
- Merge pull request #2059 from jashkenas/sauce-setup
  SauceLabs setup
- Merge pull request #2070 from jridgewell/assign-extendOwn
  Assign extendOwn
- Support fromIndex in _.contains
- Add _.create method
- Merge pull request #2072 from jridgewell/contains-fromIndex
  Contains fromIndex
- s/assign/extendOwn as the primary name.
- Document the lame  in _.includes
- updated mapObject example text in index.html
- Merge pull request #2077 from 91bananas/master
  updated mapObject example text in index.html
- Underscore 1.8.2
- component bump
- Merge branch 'master' into gh-pages
- fixed isArrayLike returning  for 0
- Merge pull request #2079 from smelnikov/isArrayLike-fix
  fixed isArrayLike returning true for 0
- Merge pull request #2074 from jridgewell/create
  Add _.create method
- s/assign/extendOwn
- Add failing test for each called too much time.
  ios8 only.
- Merge pull request #2088 from francois2metz/ios8_my_lovely_jit
  Add failing test for each called too much time in ios8
- Corrected the parameter name for mapObject within the index documentation
- Merge pull request #2097 from emmanne08/master
  Corrected the parameter name for mapObject within the index documentation
- Fix _.indexOf with NaN and startIndex
  Was returning the index in the sliced array
- Merge pull request #2102 from jridgewell/indexof-nan-start
  Fix _.indexOf with NaN and startIndex
- Optimize _.range
  Prevents an [arguments
  deopt](https://github.com/petkaantonov/bluebird/wiki/Optimization-killer
  s#31-reassigning-a-defined-parameter-while-also-mentioning-arguments-in-
  the-body-typical-example).
- Merge pull request #2107 from jridgewell/range-opt
  Optimize _.range
- Guard _.contains fromIndex
  Guards `_.contains`’s `fromIndex`, so that it may be easily used with
  `_.partial`.
  ```javascript
  var array = [1, 2, 3, 4, 5];
  var subArray = [1, 2];
  // Before
  _.every(subArray, function(i) { return _.contains(array, i); });
  // After
  _.every(subArray, _.partial(_.contains, array));
  ```
- Merge pull request #2109 from jridgewell/contains-gaurd
  Guard _.contains fromIndex
- Remove link to nonexistent create method. Fixes #2112
- Remove link to nonexistent create method. Fixes #2112
- Combine _.indexOf and _.lastIndexOf
- Merge pull request #2105 from jridgewell/indexOf-lastIndexOf-code-sharing
  Combine _.indexOf and _.lastIndexOf
- Make _.uniq doc more precise
- Merge pull request #2120 from phadej/uniq-doc
  Make _.uniq doc more precise
- Small indexOf Perf Boost
  @megawac / @jdalton noticed a [pref regression](http://jsperf.com/indexof-pr2105)
  in #2105. This should fix it.
  [jsperf](http://jsperf.com/indexof-pr2105/3)
- Merge pull request #2122 from jridgewell/indexOf-lastIndexOf-code-sharing
  Small indexOf Perf Boost
- Remove unneeded files from bower package
- Merge pull request #2127 from JustBlackBird/clean_bower_package
  Remove unneeded files from bower package
- Prevent iOS from improperly JIT-ing isArrayLike
  Fixes #2081. @jdalton found a much more efficient solution than
  `'length' in collection` by using dynamic property access. Uses
  a constant `LENGTH` variable to avoid minifiers transforming it
  into dot access.
- Merge pull request #2094 from jridgewell/ios-jit-isArrayLike
  Prevent iOS from improperly JIT-ing isArrayLike
- Fix travis install not working in node@0.8
  see jridgewell/underscore@1178042
  /cc @othiym23
- Merge pull request #2135 from megawac/travis-npm-fix
  Fix travis install not working in node@0.8
- Fix iOS JIT Bug, Part 2
  Given Closure Compiler’s [need to inline](jashkenas/underscore#2094 (comment)),
  we need to grab the length using a function (that uses dynamic property access).
  @megawac also pointed out a few other methods would be affected.
- Merge pull request #2134 from jridgewell/ios-jit-isArrayLike
  Fix iOS JIT Bug, Part 2
- Underscore 1.8.3
- Merge branch 'master' into gh-pages
8556179
@sulphur
sulphur commented Nov 2, 2015

In my cas I was using ember-cli-coffeescript and after update the was app.js and router.js that were created. If you use ember-cli-coffeescript chek and delete app.js and router.js if you have the .coffee versions

@AthinaB AthinaB added a commit to AthinaB/snf-ui-app that referenced this issue Nov 15, 2015
@AthinaB AthinaB Add rimraf and a more recent version of jQuery
Rimraf is used in order to sovle this issue:
ember-cli/ember-cli#3413
cd81ca4
@AthinaB AthinaB added a commit to AthinaB/snf-ui-app that referenced this issue Nov 15, 2015
@AthinaB AthinaB Add rimraf and a more recent version of jQuery
Rimraf is used in order to sovle this issue:
ember-cli/ember-cli#3413
a98f38b
@erichonkanen

@sulphur I'm running into this issue and I think it has to do with ember-cli-coffeescript...

Error: EEXIST, file already exists '/Users/eric/Projects/myapp/overlord/build/client-web/tmp/coffee_script_filter-output_path-XZuGEV4i.tmp/client-web/routes/application.js'

myapp/routes/application.js does not exists only myapp/routes/application.coffee

any ideas?

@sulphur
sulphur commented Mar 13, 2016

maybe try to remove your tmp dir etc.

@vt5491 vt5491 referenced this issue in angular/angular-cli Apr 8, 2016
Closed

BroccoliTypscriptCompiler error during ng serve #403

@andrewhavens

I also ran into this error while using ember-cli-coffeescript and trying to add ember-simple-auth. The solution was to convert my routes/application.coffee back to JavaScript. For some reason the default application route in ember-simple-auth conflicts with the one written in CoffeeScript.

@akira akira added a commit to akira/exq_ui that referenced this issue Nov 6, 2016
@akira akira UI Fixes - update packages to fix "File Exists" issue
When building Ember UI, getting an error.
See ember-cli/ember-cli#3413 for more details.
adbdf91
@steady-daddy

I encountered the same error when I put the file name in gulp.dest()

gulp.task('compass', function() {
    gulp.src(sassSources)
        .pipe(compass({
            ...
        })
        .pipe(gulp.dest( outputDir + 'css/style.css'))
        .pipe(connect.reload())
});

Removing style.css from gulp.dest( outputDir + 'css/style.css') fixed it for me. Not sure if rimraf has anything to do with this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment