[当我尝试使用shadow-cljs在clojurescript项目中初始化Framework7和Framework7-React时,出现如下错误:
f7.js:31 Uncaught TypeError: Framework7 is not a constructor
at Object.init (f7.js:31)
at F7App.value (app.js:162)
at commitLayoutEffects (react-dom.development.js:21965)
at HTMLUnknownElement.callCallback (react-dom.development.js:363)
at Object.invokeGuardedCallbackImpl (react-dom.development.js:412)
at invokeGuardedCallback (react-dom.development.js:467)
at commitRootImpl (react-dom.development.js:25025)
at exports.unstable_runWithPriority (scheduler.development.js:816)
at runWithPriority$2 (react-dom.development.js:12189)
at commitRoot (react-dom.development.js:24866)
Framework7初始化通常只包含以下内容
// Import Framework7
import Framework7 from 'framework7/framework7-lite.esm.bundle.js';
// Import Framework7-React Plugin
import Framework7React from 'framework7-react';
// Import Framework7 Styles
import 'framework7/css/framework7.bundle.css';
// Import Icons and App Custom Styles
import '../css/icons.css';
import '../css/app.css';
// Init F7 React Plugin
Framework7.use(Framework7React);
[有一个hacky解决方案,其中涉及两个独立的构建管道,以获取在一个简单的shadow-cljs示例项目中启动并运行Framework7。
我创建了一个a test project,其中显示了两个版本,即出现错误的非工作clojurescript版本,可以通过以下方式运行:
npx shadow-cljs watch :direct-no-webpack
它使用client2.cljs
工作版本使用ES6导入语法初始化Framework7,并使用webpack进行编译。
yarn run build-dev
npx shadow-cljs watch :direct
它产生上述错误。
我不详细了解,因为涉及多个包装,所以Framework7中到底发生了什么。
如何正确导入和使用带有Clojurescript和Shadow-CLJS的Framework7?
(ns foo.bar
(:require
["framework7" :as f7]
["framework7-react" :as f7r]))
;; avoiding top-level side-effects because of hot-reload
(defn init []
(.use f7 f7r))