Skip to content

Commit 8e4f49d

Browse files
anmonteiroswannodette
authored andcommitted
CLJS-2315: module_deps.js can't resolve JSON modules
1 parent fe77a13 commit 8e4f49d

File tree

4 files changed

+28
-4
lines changed

4 files changed

+28
-4
lines changed

src/main/cljs/cljs/module_deps.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ var filename = path.resolve(__dirname, 'JS_FILE');
99
var resolver = target === 'nodejs' ? nodeResolve : browserResolve;
1010

1111
var md = mdeps({
12-
resolve: function(id, parent, cb) {
12+
resolve: function(id, parentOpts, cb) {
1313
// set the basedir properly so we don't try to resolve requires in the Closure
1414
// Compiler processed `node_modules` folder.
15-
parent.basedir =
16-
parent.filename === filename ? __dirname : path.dirname(parent.filename);
15+
parentOpts.basedir =
16+
parentOpts.filename === filename ? __dirname : path.dirname(parentOpts.filename);
17+
parentOpts.extensions = ['.js', '.json'];
1718

18-
resolver(id, parent, cb);
19+
resolver(id, parentOpts, cb);
1920
},
2021
filter: function(id) {
2122
return !(target === 'nodejs' && nodeResolve.isCore(id));
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// b is a .json module
2+
var theJSON = require('./b');
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"foo": 42}

src/test/clojure/cljs/closure_tests.clj

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
(:refer-clojure :exclude [compile])
1111
(:use cljs.closure clojure.test)
1212
(:require [cljs.build.api :as build]
13+
[clojure.data.json :as json]
14+
[clojure.java.shell :as sh]
1315
[cljs.closure :as closure]
1416
[cljs.js-deps :as deps]
1517
[cljs.util :as util]
@@ -240,3 +242,21 @@
240242
(.delete (io/file "package.json"))
241243
(test/delete-node-modules)
242244
(test/delete-out-files out)))
245+
246+
(deftest test-cljs-2315
247+
(spit (io/file "package.json") (json/json-str {:devDependencies {"@cljs-oss/module-deps" "*"
248+
:konan "*"
249+
:resolve "*"
250+
:browser-resolve "*"}}))
251+
(apply sh/sh (cond->> ["npm" "install"]
252+
util/windows? (into ["cmd" "/c"])))
253+
(let [file (io/file (test/tmp-dir) "cljs-2315-inputs.js")
254+
_ (spit file "require('./src/test/cljs_build/json_modules_test/a.js');")
255+
node-inputs (closure/node-inputs [{:file (str file)}])]
256+
(is (= node-inputs
257+
[{:file (.getAbsolutePath (io/file "src/test/cljs_build/json_modules_test/a.js"))
258+
:module-type :es6}
259+
{:file (.getAbsolutePath (io/file "src/test/cljs_build/json_modules_test/b.json"))
260+
:module-type :es6}])))
261+
(.delete (io/file "package.json"))
262+
(test/delete-node-modules))

0 commit comments

Comments
 (0)