2024年Clojure状态调查! 中分享您的想法。

欢迎!请在关于 页面了解更多关于它是如何工作的信息。

0
ClojureScript
我试图在我的CLJS代码中使用本地NPM模块(在这种情况下,[date-fns|https://github.com/date-fns/date-fns]), 当我第一次尝试监视时,它工作正常,然而在随后的监视中,它在我的控制台出现以下错误


base.js:1357 未捕获错误:date_fns未定义nameToPath
    在(base.js:1357)
    在Object.goog.writeScripts_(base.js:1369)
    在Object.goog.require(base.js:706)
    在index.html:8


为了重现,我创建了一个构建脚本如下


(require '[cljs.build.api :as b])

(b/watch "src"
  {:main 'npm.core
   :output-to "out/npm.js"
   :output-dir "out"
   :npm-deps {:date-fns "1.29.0"}})


以及一个最小测试文件


(ns npm.core
  (:require [date-fns :as dfn]))

(def now (js/Date.))
(.write js/document "Today is " (dfn/format now "dddd"))


我还使用本地的`package.json`文件进行测试,而不是使用`install_deps true` - 我的`package.json`(由CLJS生成)看起来像这样


{
  "dependencies": {
    "@cljs-oss/module-deps": "^1.1.1",
    "date-fns": "^1.29.0"
  }
}


当运行


npm install
java -cp ../clojurescript/target/cljs.jar:src clojure.main watch.clj


一切正常,然而当我再次使用相同的命令时,出现上述错误。

然而,只有当我删除`out`目录并且第三次运行命令时,它才会再次工作。

如果需要其他详细信息,请告知。

5 个答案

0

评论者:koz

抱歉,标题可能弄错了,无法编辑。标题应该是"Re-running watch on CLJS source using-native modules results in JS error"。

0

评论者:koz

附加环境信息

npm -v 5.5.1
node -v v8.4.0

0

评论来自:andyparsons

注意到这已被切换为优先级4,但这个问题阻止了我们完全使用npm依赖。较低的优先级反映了什么?

0

评论来自:mfikes

我无法重现。在按Ctrl+C后重新运行,我得到:

$ java -cp cljs.jar:src clojure.main watch.clj 编译... ... 完成。耗时:3.674686404秒。监视路径:/Users/mfikes/Desktop/test-cljs-2440/src

这使用的是随附的1.9.908 {{cljs.jar}},以及Node v9.11.1和npm 5.6.0。

我还确认在1.10.238 JAR中无法重现。

我还使用提交{{ebdaf6c06c1112a67ba5a12498801c6d858e5a0a}}构建了1.9.968 JAR,并未能重现。

0
参考:https://clojure.atlassian.net/browse/CLJS-2440(由 alex+import 报告)
...