broccolijs / broccoli-funnel

MIT License
66 stars 37 forks source link

Windows issues #67

Open stefanpenner opened 8 years ago

stefanpenner commented 8 years ago

It appears ember-cli app on an NTFS mounted using ember-cli-d3@1.1.7 appears to be running into issues. It is possible the symlink detection (are symlinking available vs not isn't quite working as expected).

ember-cli: 2.6.2
node: 6.3.0
os: win32 x64
ember-cli-d2 1.1.7
 The Broccoli Plugin: [Funnel] failed with:
Error: ENOENT: no such file or directory, open 'E:\Work\BitBucket\New folder\tmp\funnel-output_path-W6hyqoN3.tmp\d3-plugins-dist\adnan-wahab\pathgl\named-amd\main.js'
    at Error (native)
    at Object.fs.openSync (fs.js:640:18)
    at Object.fs.writeFileSync (fs.js:1333:33)
    at symlinkWindows (E:\Work\BitBucket\New folder\node_modules\symlink-or-copy\index.js:106:18)
    at Function.symlinkOrCopySync [as sync] (E:\Work\BitBucket\New folder\node_modules\symlink-or-copy\index.js:53:5)
    at Funnel._copy (E:\Work\BitBucket\New folder\node_modules\broccoli-funnel\index.js:393:19)
    at Funnel.processFile (E:\Work\BitBucket\New folder\node_modules\broccoli-funnel\index.js:376:8)
    at Funnel.applyPatch [as _applyPatch] (E:\Work\BitBucket\New folder\node_modules\broccoli-funnel\index.js:293:12)
    at Funnel.<anonymous> (E:\Work\BitBucket\New folder\node_modules\broccoli-funnel\index.js:248:10)
    at Array.forEach (native)

The broccoli plugin was instantiated at:
    at Funnel.Plugin (E:\Work\BitBucket\New folder\node_modules\broccoli-plugin\index.js:7:31)
    at new Funnel (E:\Work\BitBucket\New folder\node_modules\broccoli-funnel\index.js:44:10)
    at Funnel (E:\Work\BitBucket\New folder\node_modules\broccoli-funnel\index.js:42:43)
    at CoreObject.module.exports.treeForVendor (E:\Work\BitBucket\New folder\node_modules\ember-cli-d3\index.js:36:43)
    at CoreObject._treeFor (E:\Work\BitBucket\New folder\node_modules\ember-cli\lib\models\addon.js:358:33)
    at CoreObject.treeFor (E:\Work\BitBucket\New folder\node_modules\ember-cli\lib\models\addon.js:326:21)
    at E:\Work\BitBucket\New folder\node_modules\ember-cli\lib\broccoli\ember-app.js:465:20
    at Array.map (native)
    at EmberApp.addonTreesFor (E:\Work\BitBucket\New folder\node_modules\ember-cli\lib\broccoli\ember-app.js:463:30)
    at EmberApp._processedVendorTree (E:\Work\BitBucket\New folder\node_modules\ember-cli\lib\broccoli\ember-app.js:919:29) 
stefanpenner commented 8 years ago

@tillerstarredwards does the above issue match correctly?

stefanpenner commented 8 years ago

@tillerstarredwards is it possible that your system tmp directory and the ember-cli app reside on differently formatted partitions or drives?

tillerstarredwards commented 8 years ago

New folder.zip

Project

tillerstarredwards commented 8 years ago

My Windows installation is on an NTFS drive (C:), my work direction is on another NTFS drive (E:)

stefanpenner commented 8 years ago

@tillerstarredwards interesting, I wonder if it is a cross-drive issue. e.g. symlinks are enable on one but not the other? Or some other related issue.

I'll have to setup a windows vm/box with multi-drive and multi-formatted drive scenarios and see whats up

tillerstarredwards commented 8 years ago

I tried this on the my C: drive and it has the same error. It doesn't appear to be related to different drives.

stefanpenner commented 8 years ago

maybe its unrelated to filesystem entirely, just the other commentor in the other issue had an unrelated issue.

bpasserat commented 7 years ago

I have the same issue with ember-d3 :

Configuration :

ember-cli: 2.10.2 node: 7.2.0 os: win32 x64 ember-d3 : 0.3.1

The Broccoli Plugin: [Funnel] failed with: Error: ENOENT: no such file or directory, symlink 'C:\Users\bpasserat\Documents\Ember\patient_webview\tmp\funnel-input_base_path-y4BOHI1Y.tmp\ember-d3\register-version.js' -> 'C:\Users\bpasserat\Documents\Ember\patient_webview\tmp\funnel-output_path-BSoLaWzK.tmp\ember-d3\register-d3-version.js' at Object.fs.symlinkSync (fs.js:961:18) at FSMonitor._measure (C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\heimdalljs-fs-monitor\index.js:66:21) at Object.symlinkSync (C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\heimdalljs-fs-monitor\index.js:82:30) at symlinkWindows (C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\symlink-or-copy\index.js:120:16) at Function.symlinkOrCopySync [as sync] (C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\symlink-or-copy\index.js:63:5) at Funnel._copy (C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\broccoli-funnel\index.js:467:19) at Funnel.processFile (C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\broccoli-funnel\index.js:450:8) at Funnel.applyPatch [as _applyPatch] (C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\broccoli-funnel\index.js:367:12) at Funnel. (C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\broccoli-funnel\index.js:321:10) at Array.forEach (native)

The broccoli plugin was instantiated at: at Funnel.Plugin (C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\broccoli-plugin\index.js:7:31) at new Funnel (C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\broccoli-funnel\index.js:58:10) at rename (C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\broccoli-stew\lib\rename.js:39:10) at Class.treeForVendor (C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\ember-d3\index.js:98:18) at Class._treeFor (C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\ember-cli\lib\models\addon.js:371:33) at Class.treeFor (C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\ember-cli\lib\models\addon.js:339:21) at C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\ember-cli\lib\broccoli\ember-app.js:499:20 at Array.map (native) at EmberApp.addonTreesFor (C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\ember-cli\lib\broccoli\ember-app.js:497:30) at EmberApp._processedVendorTree (C:\Users\bpasserat\Documents\Ember\patient_webview\node_modules\ember-cli\lib\broccoli\ember-app.js:948:29)

Any ideas ?

bpasserat commented 7 years ago

After analysis my problem was related to the function path.join used in ember-d3 to export version.

On windows path.join('ember-d3','register-d3-version.js') => 'ember-d3\register-d3-version.js' and then it shows the error.

if I replace the result of path.join by : 'ember-d3/register-d3-version.js' it works....

I execute "ember s" with :

GNU bash, version 4.3.42(5)-release (x86_64-pc-msys)

stefanpenner commented 7 years ago

Interesting.

if I replace the result of path.join by : 'ember-d3/register-d3-version.js' it works....

Where was this change made?

Also what is the result of (want to make sure there isn't an old version floating around in your node_modules

npm ls broccoli-funnel
bpasserat commented 7 years ago

The result of npm ls broccoli-funnel :

I changed these lines in ember-d3 in this file index.js

lines 73 I replace

- app.import(path.join('vendor', 'ember-d3', 'register-d3-version.js')); 
+ app.import('vendor/ember-d3/register-d3-version.js');

lines 99 I replace :

-return path.join('ember-d3', 'register-d3-version.js');
+return 'ember-d3/register-d3-version.js';
stefanpenner commented 7 years ago

I have a windows machine at home, I'll attempt to debug it this weekend.

gtb104 commented 7 years ago

I can also confirm the path issue on Windows in regard to ember-d3. Some of our devs are on Windows machines, and they all started having the same error as above when we upgraded ember-d3 to version 0.3.1.

kenperregaux commented 7 years ago

Is there any update on this problem? I have gotten this problem with ember-d3, ember-d3-cli and ember-d3-helpers. The current one I am trying is ember-d3-helpers and here is the error (I have tried all the 'solutions' on a couple of these issue #s). The drive is NTFS, current ember client etc...

The Broccoli Plugin: [Funnel] failed with: Error: ENOENT: no such file or directory, open 'C:\NgCDS_Research\Ember\ember-d3-helpers\tmp\funnel-output_path-vv60YlYa.tmp\ember-d3\register-d3-ver sion.js' at Error (native) at Object.fs.openSync (fs.js:640:18) at FSMonitor._measure (C:\NgCDS_Research\Ember\ember-d3-helpers\node_modules\heimdalljs-fs-monitor\index.js:66:21) at Object.openSync (C:\NgCDS_Research\Ember\ember-d3-helpers\node_modules\heimdalljs-fs-monitor\index.js:82:30) at Object.fs.writeFileSync (fs.js:1333:33) at FSMonitor._measure (C:\NgCDS_Research\Ember\ember-d3-helpers\node_modules\heimdalljs-fs-monitor\index.js:66:21) at Object.writeFileSync (C:\NgCDS_Research\Ember\ember-d3-helpers\node_modules\heimdalljs-fs-monitor\index.js:82:30) at symlinkWindows (C:\NgCDS_Research\Ember\ember-d3-helpers\node_modules\symlink-or-copy\index.js:125:18) at Function.symlinkOrCopySync [as sync] (C:\NgCDS_Research\Ember\ember-d3-helpers\node_modules\symlink-or-copy\index.js:63:5) at Funnel._copy (C:\NgCDS_Research\Ember\ember-d3-helpers\node_modules\broccoli-funnel\index.js:467:19)

The broccoli plugin was instantiated at: at Funnel.Plugin (C:\NgCDS_Research\Ember\ember-d3-helpers\node_modules\broccoli-plugin\index.js:7:31) at new Funnel (C:\NgCDS_Research\Ember\ember-d3-helpers\node_modules\broccoli-funnel\index.js:58:10) at rename (C:\NgCDS_Research\Ember\ember-d3-helpers\node_modules\broccoli-stew\lib\rename.js:39:10) at Class.treeForVendor (C:\NgCDS_Research\Ember\ember-d3-helpers\node_modules\ember-d3\index.js:98:18) at Class._treeFor (C:\NgCDS_Research\Ember\ember-d3-helpers\node_modules\ember-cli\lib\models\addon.js:371:33) at Class.treeFor (C:\NgCDS_Research\Ember\ember-d3-helpers\node_modules\ember-cli\lib\models\addon.js:339:21) at C:\NgCDS_Research\Ember\ember-d3-helpers\node_modules\ember-cli\lib\models\addon.js:254:34 at Array.map (native) at Class.eachAddonInvoke (C:\NgCDS_Research\Ember\ember-d3-helpers\node_modules\ember-cli\lib\models\addon.js:252:24) at Class.treeFor (C:\NgCDS_Research\Ember\ember-d3-helpers\node_modules\ember-cli\lib\models\addon.js:338:22)

TheMysticMan commented 7 years ago

I'm having the same issue. I guess it has something todo with broccoli using path-posix and ember using path.
Although ember-app ._getAssetPath replaces the backwards slashes with forward ones.

@bpasserat's answer works for me but I only have to change line 99.

gtb104 commented 7 years ago

Is anyone looking into this? I've poked around, but have not come up with a solution.