Chrome says my content script isn’t UTF-8

Receiving the error Could not load file 'worker.js' for content script. It isn't UTF-8 encoded.

> file -I chrome/worker.js
chrome/worker.js: text/plain; charset=utf-8

With to-utf8-unix

> to-utf8-unix chrome/worker.js                                      
Detected charset:
Confidence of charset detection:
Conversion not needed.

I also tried converting the file with Sublime Text back and forth without any luck.


  "content_scripts": [{
      "matches": ["*"],
      "js": ["worker.js"]

The file in question:

It is a compiled javascript file spit out from clojurescript with cljsbuild:

               {:id "chrome-worker"
                :source-paths ["src/chrome/worker"],
                :compiler {:output-to "chrome/worker.js",
                           :optimizations :simple,
                           :pretty-print false}}

Other files (options page, background) are compiled the same way and don’t generate this error. I tried getting rid of weird characters like Emojis but that didn’t fix the problem.

Setting up Dirac Devtools for clojurescript

steps taken to setup

% git clone
% cd dirac-sample
% lein demo

in another console:

% cd dirac-sample
% lein repl
Dirac Agent v1.2.17
Connected to nREPL server at nrepl://localhost:8230.
Agent is accepting connections at ws://localhost:8231.

Open Chromium with command:

% /usr/bin/chromium --remote-debugging-port=9222 --no-first-run --user-data-dir=~/.dirac 

Dirac Devtools already installed to this Chromium

In Chromium open page:


When there click on the ‘Click to open Dirac Devtools’ green squiggly
line icon.

Devtools is opened with the green underline highlight not blue.

On webpage click on ‘demo a breakpoint’

Nothing shows up in the green underline hightlight devtools, but a
‘Paused in Debugger’ overlay is on the webpage.

Not sure what I’m doing wrong

How to respond to caller in kroma.runtime/on-message

I’m writing chrome extension with kroma.

I’m calling following function in my popup.cljs:

(defn my-caller-function [timer]
  (runtime/send-message {:foo :bar
                         :responseCallback do-something}))

I’m listening to messages in my background.cljs

(defn init []
    (when-let [message (

As far as I understand do-something should be called with "foo" as argument. But it isn't.

What am I doing wrong?