ClojureScript

Having a namespace end with ".cljs" produces wrong source map

Details

  • Type: Defect Defect
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Completed
  • Affects Version/s: 0.0-3058
  • Fix Version/s: 0.0-3115
  • Component/s: None
  • Environment:
    Windows 7
    JDK 1.7
    CLJS version: 0.0-2138 and 0.0-2156 (probably hits other versions too, but I only tested these two)

Description

When an clojurescript namespaces ends with ".cljs" I cannot see the source file in google chrome.
Repro steps:

1. Create a new luminus project with: lein new luminus cljsbug +cljs +http-kit
2. Change the project.clj cljsbuild -> compiler setting to:

:compiler
{:output-to "resources/public/js/site.js"
:output-dir "resources/public/js/out"
:optimizations :none
:source-map true
}

3. Change cljsexample.html file to:

<script type="text/javascript" src="js/out/goog/base.js"></script>
<script type="text/javascript" src="{{servlet-context}}/js/site.js"></script>
<script type="text/javascript">goog.require("cljsbug.main");</script>

4. Now start the server with "lein run -dev" and "lein cljsbuild auto"
5. Open localhost:3000/cljsexample
6. Check for the source file in google chrome

It should be there now and correct.
Now to reproduce the problem do this:

7. Change the namespace of the main.cljs file to: ns cljsbug.main.cljs
8. Change the cljsexample.html goog.require line to:

<script type="text/javascript">goog.require("cljsbug.main.cljs");</script>

9. Restart the cljsbuild with: lein do cljsbuild clean, cljsbuild auto
10. Reload the /cljsexample page in google chrome and the source mapping wont be there anymore.

Activity

Hide
Sven Richter added a comment -

Just to clear things up. Steps 1 to 6 are not needed to reproduce the problem. It is sufficient to go through steps 7 to 10 on any project that uses a similar cljsbuild setting.
It is important that optimizations are set to :none.

Short repro version.

1. Have cljs project with the following settings:
:compiler
{:output-to "resources/public/js/site.js"
:output-dir "resources/public/js/out"
:optimizations :none
:source-map true
}

2. Change any cljs file namespace and add ".cljs" to the namespace.
3. Have the new namespace required in the html file by google like this: goog.require("cljsbug.main.cljs")

4. Open a page in the browser and see that the source maps are missing.

Show
Sven Richter added a comment - Just to clear things up. Steps 1 to 6 are not needed to reproduce the problem. It is sufficient to go through steps 7 to 10 on any project that uses a similar cljsbuild setting. It is important that optimizations are set to :none. Short repro version. 1. Have cljs project with the following settings: :compiler {:output-to "resources/public/js/site.js" :output-dir "resources/public/js/out" :optimizations :none :source-map true } 2. Change any cljs file namespace and add ".cljs" to the namespace. 3. Have the new namespace required in the html file by google like this: goog.require("cljsbug.main.cljs") 4. Open a page in the browser and see that the source maps are missing.
Hide
David Nolen added a comment -

A patch for this is welcome!

Show
David Nolen added a comment - A patch for this is welcome!
Hide
David Nolen added a comment -

Cannot reproduce this on master using the compiler directly. If you can reproduce using only the instructions given in the Quick Start please feel free to reopen this one.

Show
David Nolen added a comment - Cannot reproduce this on master using the compiler directly. If you can reproduce using only the instructions given in the Quick Start please feel free to reopen this one.

People

Vote (0)
Watch (2)

Dates

  • Created:
    Updated:
    Resolved: