madskristensen / WebEssentials2013

Visual Studio extension
http://vswebessentials.com
Other
944 stars 251 forks source link

Incorrect errors from less compilation #1170

Closed kingmotley closed 10 years ago

kingmotley commented 10 years ago

We have a common less file that gets imported to many different less files, and we get strange errors when building. Such as: 6/9/2014 9:57:25 AM: LESS: tripstarterslincoln.less compiled. 6/9/2014 9:57:26 AM: LESS: tripstartersCulinary.less compiled. 6/9/2014 9:57:26 AM: LESS: traveldeals.responsive.less compiled. 6/9/2014 9:57:26 AM: LESS: tripstarterslincoln.less compilation failed: FileError: 'tripstartercommon.less' wasn't found 6/9/2014 9:57:26 AM: LESS: tripstartercommon.less compiled. 6/9/2014 9:57:26 AM: LESS: tripstarterschicago.less compiled. 6/9/2014 9:57:26 AM: LESS: tripstartersroute66.less compilation failed: FileError: 'tripstartercommon.less' wasn't found 6/9/2014 9:57:26 AM: LESS: tripstartersoutdoor.less compilation failed: FileError: 'tripstartercommon.less' wasn't found 6/9/2014 9:57:26 AM: LESS: tripstarterschicago.less compilation failed: FileError: 'tripstartercommon.less' wasn't found 6/9/2014 9:57:26 AM: LESS: tripstarterslgbt.less compilation failed: FileError: 'tripstartercommon.less' wasn't found

Notice that tripstarterslincoln.less compiled fine, then 3 lines later, it complains that it failed to compile because it couldn't find tripstartercommon.less, which it then finds and compiles on the very next line. Similar thing for tripstarterschicago.less, but in a different order.

SLaks commented 10 years ago

No; that exception was from a request to /. I'm not sure why there is no stack trace from the original error.

am11 commented 10 years ago

Yes you are right; / is the heartbeat check! :D

kingmotley commented 10 years ago

hidpi

kingmotley commented 10 years ago

And here is a brand new project doing the same thing: wetest

kingmotley commented 10 years ago

Ok, the problem goes away if I turn off the autoprefixer. So it appears it's a problem if you compile a LESS file that returns no results and you have the autoprefixer turned on. That should help track down what the issue is. The prefixer settings we are currently using is IE >= 9, last 2 ff versions, last 2 Chrome versions, last 2 safari versions, last 2 ios versions but also happens if you leave the browsers defaulting to blank as well.

am11 commented 10 years ago

@kingmotley, it turned out to be a JSON parse issue. I am busy implementing another service; rtlcss and refactored that code (for sake of DRY). Can't say for sure if it has fixed your issue, but since it is narrowed down; fixing it should not be an issue. Nice catch BTW. :+1:

am11 commented 10 years ago

With https://github.com/madskristensen/WebEssentials2013/pull/1396, this issue is also fixed. The problem was with parson invalid JSON produced by autoprefixer. The piece of code which was responsible for that has been removed now (it was to strip ../ from each paths in source-map's "sources" path array, which doesn't happen anymore).

@madskristensen, lets @kingmotley confirm it before this is closed. For that matter, should we have a nightly build at this point; v2.3.1?

am11 commented 10 years ago

@kingmotley can you please test with v2.3.1 nightly to see if it's fixed?

kingmotley commented 10 years ago

Tested with v2.3.3 nightly today, first rebuild threw a lot of errors about the rtlstuff. Building again was much cleaner. First build:

1>------ Rebuild All started: Project: enjoy2, Configuration: Debug Any CPU ------
1>  enjoy2 -> C:\Dropbox\enjoy2\enjoy2\bin\enjoy2.dll
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
9/11/2014 2:09:23 PM: An exception was thrown when compilingC:\Dropbox\enjoy2\enjoy2\content\flexslider.custom.less: System.IO.IOException: The file 'C:\Users\rmckee\.rtlcssrc' already exists.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
   at System.IO.File.Copy(String sourceFileName, String destFileName)
   at MadsKristensen.EditorExtensions.NodeExecutorBase.GetOrCreateGlobalSettings(String fileName)
   at MadsKristensen.EditorExtensions.Less.LessCompiler.GetPath(String sourceFileName, String targetFileName)
   at MadsKristensen.EditorExtensions.NodeExecutorBase.<CompileAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at MadsKristensen.EditorExtensions.Compilers.NodeCompilerRunner.<RunCompilerAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at MadsKristensen.EditorExtensions.Compilers.CompilerRunnerBase.<CompileAsync>d__0.MoveNext()
9/11/2014 2:09:23 PM: An exception was thrown when compilingC:\Dropbox\enjoy2\enjoy2\content\bootstrap.less: System.IO.IOException: The file 'C:\Users\rmckee\.rtlcssrc' already exists.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
   at System.IO.File.Copy(String sourceFileName, String destFileName)
   at MadsKristensen.EditorExtensions.NodeExecutorBase.GetOrCreateGlobalSettings(String fileName)
   at MadsKristensen.EditorExtensions.Less.LessCompiler.GetPath(String sourceFileName, String targetFileName)
   at MadsKristensen.EditorExtensions.NodeExecutorBase.<CompileAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at MadsKristensen.EditorExtensions.Compilers.NodeCompilerRunner.<RunCompilerAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at MadsKristensen.EditorExtensions.Compilers.CompilerRunnerBase.<CompileAsync>d__0.MoveNext()
9/11/2014 2:09:23 PM: LESS: app.responsive.less compiled.
9/11/2014 2:09:23 PM: LESS: itimsmodule.responsive.less compiled.
9/11/2014 2:09:24 PM: LESS: miniabe_animation.less compiled.
9/11/2014 2:09:24 PM: LESS: oldbrowser.less compiled.
9/11/2014 2:09:24 PM: LESS: regions.responsive.less compiled.
9/11/2014 2:09:24 PM: LESS: thingstodo.responsive.less compiled.
9/11/2014 2:09:24 PM: LESS: travelguides.responsive.less compiled.
9/11/2014 2:09:24 PM: LESS: thingstododetails.responsive.less compiled.
9/11/2014 2:09:24 PM: LESS: site.responsive.less compiled.
9/11/2014 2:09:24 PM: LESS: seasonal.responsive.less compiled.
9/11/2014 2:09:24 PM: LESS: traveldeals.responsive.less compiled.
9/11/2014 2:09:24 PM: LESS: hidpi.less compiled.
9/11/2014 2:09:27 PM: LESS: oldbrowser.less compiled.
9/11/2014 2:09:27 PM: LESS: seasonal.responsive.less compiled.
9/11/2014 2:09:27 PM: LESS: thingstododetails.responsive.less compiled.
9/11/2014 2:09:27 PM: LESS: regions.responsive.less compiled.
9/11/2014 2:09:27 PM: LESS: app.responsive.less compiled.
9/11/2014 2:09:27 PM: LESS: itimsmodule.responsive.less compiled.
9/11/2014 2:09:27 PM: LESS: bootstrap.less compiled.
9/11/2014 2:09:28 PM: LESS: thingstodo.responsive.less compiled.
9/11/2014 2:09:28 PM: LESS: traveldeals.responsive.less compiled.
9/11/2014 2:09:29 PM: LESS: travelguides.responsive.less compiled.
9/11/2014 2:09:29 PM: LESS: miniabe.responsive.less compiled.
9/11/2014 2:09:29 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:29 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:29 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:29 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:29 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:29 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:29 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:29 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:29 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:30 PM: LESS: ItimsModule.less compiled.
9/11/2014 2:09:30 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:30 PM: LESS: site.responsive.less compiled.
9/11/2014 2:09:30 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:30 PM: LESS: illinoisvideos.less compiled.
9/11/2014 2:09:30 PM: LESS: ThingsToDo.less compiled.
9/11/2014 2:09:30 PM: LESS: newIllinoisVideos.less compiled.
9/11/2014 2:09:30 PM: LESS: app.less compiled.
9/11/2014 2:09:30 PM: LESS: seasonal.less compiled.
9/11/2014 2:09:30 PM: LESS: travelguides.less compiled.
9/11/2014 2:09:30 PM: LESS: regions.less compiled.
9/11/2014 2:09:30 PM: LESS: home.responsive.less compiled.
9/11/2014 2:09:30 PM: LESS: TravelDeals.less compiled.
9/11/2014 2:09:30 PM: LESS: ThingsToDoDetails.less compiled.
9/11/2014 2:09:30 PM: LESS: Site.less compiled.
9/11/2014 2:09:31 PM: LESS: Home.less compiled.
9/11/2014 2:09:31 PM: LESS: tripstartercommon.less compiled.
9/11/2014 2:09:31 PM: LESS: miniabe.less compiled.
9/11/2014 2:09:31 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:32 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:32 PM: LESS: tripstarterschicago.less compiled.
9/11/2014 2:09:32 PM: LESS: tripstarterswine.less compiled.
9/11/2014 2:09:33 PM: LESS: tripstartersoffroad.less compiled.
9/11/2014 2:09:34 PM: LESS: tripstarterslgbt.less compiled.
9/11/2014 2:09:34 PM: LESS: tripstartersCulinary.less compiled.
9/11/2014 2:09:34 PM: LESS: tripstarterslincoln.less compiled.
9/11/2014 2:09:34 PM: LESS: tripstartersoutdoor.less compiled.
9/11/2014 2:09:35 PM: LESS: tripstartersfamilyland.less compiled.
9/11/2014 2:09:35 PM: LESS: tripstartersroute66.less compiled.
9/11/2014 2:09:35 PM: LESS: tripstartersmancation.less compiled.
9/11/2014 2:09:35 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:35 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:35 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:35 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:36 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:36 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:36 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:36 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:36 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:36 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:09:36 PM: An exception was thrown when compiling solution-wide LESS: System.IO.IOException: The file 'C:\Users\rmckee\.rtlcssrc' already exists.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
   at System.IO.File.Copy(String sourceFileName, String destFileName)
   at MadsKristensen.EditorExtensions.NodeExecutorBase.GetOrCreateGlobalSettings(String fileName)
   at MadsKristensen.EditorExtensions.Less.LessCompiler.GetPath(String sourceFileName, String targetFileName)
   at MadsKristensen.EditorExtensions.NodeExecutorBase.<CompileAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at MadsKristensen.EditorExtensions.Compilers.NodeCompilerRunner.<RunCompilerAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at MadsKristensen.EditorExtensions.Compilers.CompilerRunnerBase.<CompileAsync>d__0.MoveNext()
System.IO.IOException: The file 'C:\Users\rmckee\.rtlcssrc' already exists.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
   at System.IO.File.Copy(String sourceFileName, String destFileName)
   at MadsKristensen.EditorExtensions.NodeExecutorBase.GetOrCreateGlobalSettings(String fileName)
   at MadsKristensen.EditorExtensions.Less.LessCompiler.GetPath(String sourceFileName, String targetFileName)
   at MadsKristensen.EditorExtensions.NodeExecutorBase.<CompileAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at MadsKristensen.EditorExtensions.Compilers.NodeCompilerRunner.<RunCompilerAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at MadsKristensen.EditorExtensions.Compilers.CompilerRunnerBase.<CompileAsync>d__0.MoveNext()

subsequent builds looked more like this:

1>------ Rebuild All started: Project: enjoy2, Configuration: Debug Any CPU ------
1>  enjoy2 -> C:\Dropbox\enjoy2\enjoy2\bin\enjoy2.dll
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
9/11/2014 2:16:28 PM: LESS: regions.responsive.less compiled.
9/11/2014 2:16:30 PM: LESS: bootstrap.less compiled.
9/11/2014 2:16:30 PM: LESS: thingstododetails.responsive.less compiled.
9/11/2014 2:16:30 PM: LESS: seasonal.responsive.less compiled.
9/11/2014 2:16:30 PM: LESS: traveldeals.responsive.less compiled.
9/11/2014 2:16:30 PM: LESS: miniabe_animation.less compiled.
9/11/2014 2:16:30 PM: LESS: thingstodo.responsive.less compiled.
9/11/2014 2:16:30 PM: LESS: itimsmodule.responsive.less compiled.
9/11/2014 2:16:30 PM: LESS: hidpi.less compiled.
9/11/2014 2:16:30 PM: LESS: oldbrowser.less compiled.
9/11/2014 2:16:33 PM: LESS: bootstrap.less compiled.
9/11/2014 2:16:33 PM: LESS: thingstodo.responsive.less compiled.
9/11/2014 2:16:33 PM: LESS: oldbrowser.less compiled.
9/11/2014 2:16:33 PM: LESS: itimsmodule.responsive.less compiled.
9/11/2014 2:16:33 PM: LESS: travelguides.responsive.less compiled.
9/11/2014 2:16:33 PM: LESS: thingstododetails.responsive.less compiled.
9/11/2014 2:16:33 PM: LESS: app.responsive.less compiled.
9/11/2014 2:16:33 PM: LESS: app.responsive.less compiled.
9/11/2014 2:16:33 PM: LESS: seasonal.responsive.less compiled.
9/11/2014 2:16:33 PM: LESS: travelguides.responsive.less compiled.
9/11/2014 2:16:33 PM: LESS: regions.responsive.less compiled.
9/11/2014 2:16:33 PM: LESS: site.responsive.less compiled.
9/11/2014 2:16:33 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:33 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:33 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:33 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:33 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:33 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:33 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:33 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:33 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:33 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:33 PM: LESS: traveldeals.responsive.less compiled.
9/11/2014 2:16:34 PM: LESS: flexslider.custom.less compiled.
9/11/2014 2:16:34 PM: LESS: site.responsive.less compiled.
9/11/2014 2:16:34 PM: LESS: TravelDeals.less compiled.
9/11/2014 2:16:34 PM: LESS: ThingsToDo.less compiled.
9/11/2014 2:16:34 PM: LESS: regions.less compiled.
9/11/2014 2:16:34 PM: LESS: home.responsive.less compiled.
9/11/2014 2:16:35 PM: LESS: Site.less compiled.
9/11/2014 2:16:35 PM: LESS: seasonal.less compiled.
9/11/2014 2:16:35 PM: LESS: ItimsModule.less compiled.
9/11/2014 2:16:35 PM: LESS: miniabe.responsive.less compiled.
9/11/2014 2:16:35 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:35 PM: LESS: app.less compiled.
9/11/2014 2:16:35 PM: LESS: travelguides.less compiled.
9/11/2014 2:16:35 PM: LESS: ThingsToDoDetails.less compiled.
9/11/2014 2:16:35 PM: LESS: newIllinoisVideos.less compiled.
9/11/2014 2:16:36 PM: LESS: illinoisvideos.less compiled.
9/11/2014 2:16:36 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:37 PM: LESS: tripstartercommon.less compiled.
9/11/2014 2:16:37 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:37 PM: LESS: miniabe.less compiled.
9/11/2014 2:16:38 PM: LESS: Home.less compiled.
9/11/2014 2:16:38 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:38 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:38 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:38 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:38 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:38 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:38 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:38 PM: LESS: tripstartersroute66.less compiled.
9/11/2014 2:16:39 PM: LESS: tripstartersoutdoor.less compiled.
9/11/2014 2:16:39 PM: LESS: tripstartersfamilyland.less compiled.
9/11/2014 2:16:39 PM: LESS: tripstartersCulinary.less compiled.
9/11/2014 2:16:40 PM: LESS: tripstartersoffroad.less compiled.
9/11/2014 2:16:40 PM: LESS: tripstartersmancation.less compiled.
9/11/2014 2:16:40 PM: LESS: tripstarterschicago.less compiled.
9/11/2014 2:16:40 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:40 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:40 PM: LESS: tripstarterswine.less compiled.
9/11/2014 2:16:41 PM: LESS: tripstarterslincoln.less compiled.
9/11/2014 2:16:41 PM: LESS: 'hidpi.less' wasn't found
9/11/2014 2:16:41 PM: LESS: tripstarterslgbt.less compiled.
kingmotley commented 10 years ago

Looks like the problem where the LESS file that produced no output was throwing the autoprefixer for a loop has been fixed. Still not sure why it appears that there is an issue with not finding 'hidpi.less' sometimes, or why it is recompiling the same files multiple times however. I'll close this topic and reopen another regarding those when I have a chance to simplify the conditions that causes them.