问题标签 [donejs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
canjs - DoneJS - 添加组件时聊天示例失败
我正在关注以下 URL 上的DoneJS聊天示例:
但是,当我进入 Step: Generate custom elements 时,我收到以下错误:
C:_source\donejs\donejs-chat>donejs 添加组件 home.component chat-home x 未指定“文件夹”或“应用程序名称”。既不在您的 .yo-rc.json 也不在您的 package.json 文件中
我已经安装了:
- 节点JS 5.5.0
- NPM 3.3.12
- 完成JS 0.6.0
- 引导程序 3.3.6
关于什么是错误的和/或如何解决问题的任何想法?
canjs - CanJS点击组件外部影响组件
我想在其中添加一个<some-component>
对按钮作出反应的事件侦听器。
我相信这真的很简单。我对 CanJS 非常陌生,并且正在研究它。
我尝试将 a 添加$('body').on('click', '.click', function() {});
到组件中,但它似乎不起作用。阅读了很多文档,但我仍然缺少一些基本的理解。
更新
我试过这个:
与事件监听器some-component-main
但这也没有用。
javascript - 使用 DoneJS 捕获 URL 的剩余部分
基本上,我的目标是捕获路由中 url 的其余部分并将其存储到 ViewModel 中。
在 AngularJS 中,你可以这样做:
...当您访问时/foo/bar/baz
,例如,$routeParams.page
是'bar/baz'
.
所以我在 DoneJS 中尝试了类似的东西,在以下行中app.js
:
哪个,真的,应该工作,对吧?
没有。当你重新加载时,Nodejs 控制台充满了:
此外,一个星号在 URL 末尾闪烁,ViewModel 中“页面”的内容在'home'
和之间快速变化undefined
,几秒钟后浏览器锁定(用 Chrome 和 Firefox 尝试)。
我已经厌倦了*
从路线中删除,但这会导致/foo/bar/baz
不匹配/foo/bar
。
如何将 URL 的其余部分捕获到 ViewModel 中?
plugins - Funcunit 的开放正在给 Travis 和 CircleCI 等在线 CI 服务带来麻烦
我有一个 donejs 插件 ( https://github.com/riescorp/donejs-typeahead ),我决定使用 funcunit ( http://funcunit.com/ ) 进行 GUI 交互测试。在我的电脑上一切正常,无论是运行测试页面(http://localhost:8080/test/test.html)还是npm test
在控制台上运行。
问题是在 CircleCI 或 Travis CI 上运行测试时,测试不会通过。错误类似于“xxxxx 页面未及时加载!” (见下面的例子)。
有一个简化的分支来显示正在发生的事情(https://github.com/riescorp/donejs-typeahead/tree/testing-open),您可以克隆它,然后运行npm install
,npm test
您会看到它有效。
您可以在此处查看 CircleCI 中错误的详细信息:
- https://circleci.com/gh/riescorp/donejs-typeahead/tree/testing-open
- https://circleci.com/gh/riescorp/donejs-typeahead/74(样本)
Travis 生成相同的错误,但它会失败,因为我正在测试 firefox 和 chrome(travis 不支持 chrome)
示例错误:
1) QUnit "test/test.html" on Chrome 53.0.2785 / Linux 0.0.0: donejs-typeahead GUI Interaction DEBUG TESTS DEBUG 1 Page //../src/donejs-typeahead.html not loaded in time!:
Error: Expected true but was false
at Object.ok (http://localhost:3996/node_modules/steal-qunit/node_modules/qunitjs/qunit/qunit.js:2194:12)
at Object.assertOK (http://localhost:3996/node_modules/funcunit/browser/adapters/qunit.js:12:10)
at http://localhost:3996/node_modules/funcunit/browser/queue.js:168:27
production-environment - 无法在生产模式下运行
我有一个 donejs 应用程序,它在开发模式下运行正常donejs develop
,但是当我在生产模式下运行它时:
donejs build
donejs deploy
(到火力基地)NODE_ENV=production donejs start
它不会启动并显示错误(参见代码 A)
此文件:file:my-app/dist/bundles/my-app/index.js:704
对应于 JQuery 3.x,它不是项目本身的依赖项,而是 can-connect-feathers 的依赖项(https://github.com/canjs/can-connect-feathers)。事实上,index.js
其中还包含 JQuery 2.x,这让我觉得它们之间可能存在某种不兼容。
我已经尝试将项目的依赖项更改为 JQuery 3.x 但没有帮助。实际上它甚至donejs develop
会失败(参见代码 B)。
我还尝试了以下方法:
cd my-app/node_modules/steal
npm install
但没有帮助,出现另一个错误并最终尝试cd my-app/node_modules/can && npm install
但最终出现多个错误。
我在用着:
- donejs@0.9.2
- 节点@4.6.2
- npm@2.15.11
- 可以连接羽毛@1.2.1
代码 A
NODE_ENV=production donejs start
my-app@0.0.0 start my-app
done-serve --proxy http://localhost:3030 --port 8080
done-serve starting on http://localhost:8080
Potentially unhandled rejection [5] TypeError: Error loading "package.json!npm" at file:my-app/package.json
Error loading "bundles/my-app/index" at file:my-app/dist/bundles/my-app/index.js
Error evaluating file:my-app/dist/bundles/my-app/index.js
Cannot read property 'createElement' of undefined
at i (file:my-app/dist/bundles/my-app/index.js:704:20)
at file:my-app/dist/bundles/my-app/index.js:1039:2881
at file:my-app/dist/bundles/my-app/index.js:1039:3580
at file:my-app/dist/bundles/my-app/index.js:268:21
at file:my-app/dist/bundles/my-app/index.js:268:27
at Object.exports.runInThisContext (vm.js:54:17)
at doEval (my-app/node_modules/steal/node_modules/steal-systemjs/dist/system.src.js:2059:10)
at __eval (my-app/node_modules/steal/node_modules/steal-systemjs/dist/system.src.js:1976:7)
at Loader.exec [as __exec] (my-app/node_modules/steal/node_modules/steal-systemjs/dist/system.src.js:339:5)
at Loader.loader.instantiate (my-app/node_modules/steal/node_modules/steal-systemjs/dist/system.src.js:1517:16)
代码 B
donejs develop
my-app@0.0.0 develop my-app
done-serve --develop --proxy http://localhost:3030 --port 8080
done-serve starting on http://localhost:8080
Potentially unhandled rejection [8] Error: Error loading "my-app@0.0.0#index.stache!done-autorender@0.8.0#autorender" at <unknown>
Error loading "can@2.3.27#util/jquery/jquery" at file:my-app/node_modules/can/util/jquery/jquery.js
Error loading "can@2.3.27#util/jquery/jquery" from "done-autorender@0.8.0#autorender" at file:my-app/node_modules/done-autorender/src/autorender.js
Did not find ./node_modules/can/node_modules/jquery/package.json
at FetchTask.utils.extend.next (file:my-app/node_modules/steal/ext/npm-crawl.js:532:11)
at file:my-app/node_modules/steal/ext/npm-crawl.js:556:33
at tryCatchReject (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:1183:30)
at runContinuation1 (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:1142:4)
at Fulfilled.when (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:930:4)
at Pending.run (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:821:13)
at Scheduler._drain (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:97:19)
at Scheduler.drain (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:62:9)
at nextTickCallbackWith0Args (node.js:436:9)
at process._tickCallback (node.js:365:13)
Potentially unhandled rejection [16] Error: Error loading "can@2.3.27#util/jquery/jquery" at file:my-app/node_modules/can/util/jquery/jquery.js
Error loading "can@2.3.27#util/jquery/jquery" from "my-app@0.0.0#index.stache!done-autorender@0.8.0#autorender" at file:my-app/src/index.stache
Did not find ./node_modules/can/node_modules/jquery/package.json
at FetchTask.utils.extend.next (file:my-app/node_modules/steal/ext/npm-crawl.js:532:11)
at file:my-app/node_modules/steal/ext/npm-crawl.js:556:33
at tryCatchReject (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:1183:30)
at runContinuation1 (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:1142:4)
at Fulfilled.when (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:930:4)
at Pending.run (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:821:13)
at Scheduler._drain (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:97:19)
at Scheduler.drain (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:62:9)
at nextTickCallbackWith0Args (node.js:436:9)
at process._tickCallback (node.js:365:13)
javascript - 使用 donejs 未正确更新计算值
我有一个标准的 donejs 项目,其中包含一个组件和一个模型,它们都是使用默认生成器创建的,如下所示:
我在这里留下了一个示例项目:https ://github.com/riescorp/donejs-promise-iterate
如果您使用donejs develop
并转到http://localhost:8080运行此示例,您将看到如下内容:
问题是,每当您更改任何故事的页数(输入框)值时,总和都不会更新其值。我几乎尝试了一切,从承诺到已经解决的承诺,但似乎没有任何效果。
不知何故,当这些值中的任何一个发生变化时,似乎根本没有更新触发器。我也尝试将结果设置为 List ( can.List
) 但没有运气。
javascript - 在 donejs 中正确建模 MVVM 应用程序
我做了什么
我在 donejs 中创建了一个组件,然后创建了两个超模contact
并email
使用以下命令:
donejs add component contactComponent contact-component
donejs add supermodel contact
donejs add supermodel email
有一个提供联系人和电子邮件的 API (feathers+mongodb)。每封电子邮件都有一个contactId
.
该组件包含Contact
模型并处理诸如保存、创建新元素、删除元素等操作。将其与.stache
文件组合时,它将成功地从 API 中检索元素并相应地列出它们。
所以每个Contact
人都有电子邮件。由于每个联系人都有自己的电子邮件,因此contactComponent 无法直接获取它们,而是通过 Contact
元素获取它们。
这就是我的设计问题开始的地方。
到目前为止,contactComonent 创建了一个处理联系人处理方式的视图模型。联系人模型处理 API 连接。这工作正常,可扩展且干净。
但是每个联系人都需要一个新模型来加载数据(电子邮件),然后我直接使用该模型来管理与电子邮件相关的所有逻辑。这确实有效,但似乎让模型处理连接和处理复杂交互的视图模型更适合 MVVM 设计模式。
我想我不是第一个进行此类数据建模的人,我认为必须有更好的解决方案,尤其是在处理大量关系和更复杂的关系时。
我认为我目前拥有的是这样的:
这就是我正在寻找的(我可能错了)
使用过的文件
文件结构 联系人组件/contactComponent.js contactComponent/contactComponent.stache 模型/email.js这是事情开始变得过于复杂的地方:
模型/contact.jsjavascript - 在 nodejs 服务器中部署 donejs 应用程序
我对 donejs 完全陌生,使用 yeoman 创建了 donejs 应用程序,然后创建了一些组件。为了部署应用程序,我运行了“node build”并创建了一个 dist 文件夹,其中包含一个 bundles 文件夹和一个 Steal.production.js 文件。
在基本上为应用程序提供服务的nodejs服务器上部署这个dist文件夹的方法是什么,而且我不想在控制台中进行任何观察,它应该基本上只是开始通过端口提供服务,以便devops之后可以运行脚本。
构建.js
从 dist 文件夹:
我的 package.json 文件中的脚本:
运行 donejs start 后:
它在 8080 上服务,但控制台被阻止,devops 团队说控制台不应该被阻止,以便他们可以在启动服务器后运行脚本。
donejs - 将参数从子级传递给父级时在 donejs 视图中访问模型
来自官方文档: 将模型从 donejs 子组件传递到父组件模型
我在主页组件和另一个产品表组件中包含了搜索过滤器组件,该组件将在过滤器更改时进行更新。
主页比较(stache 文件):
如何在主页组件js文件中访问这个“*filters”?我已经尝试过:因为*过滤器是一个数组,如果我将它作为自定义数据属性传递,它就会变成“[object][object]”。
node.js - steal.js 中的控制台错误:“无法定义属性 _instanceDefinitions”
加载页面会产生以下错误:
steal.js:140 Potentially unhandled rejection [1] TypeError: Cannot define property _instanceDefinitions, object is not extensible
at Function.defineProperty (<anonymous>)
at Object.defineExpando (http://localhost:8080/node_modules/can-define/define-helpers/define-helpers.js:20:11)
at DefineMap.setKeyValue (http://localhost:8080/node_modules/can-define/map/map.js:52:30)
at Object.setKeyValue (http://localhost:8080/node_modules/can-reflect/reflections/get-set/get-set.js:50:23)
at Object.eval (http://localhost:8080/node_modules/can-reflect/reflections/shape/shape.js:701:23)
at String.eval (http://localhost:8080/node_modules/can-reflect/reflections/shape/shape.js:445:21)
at Object.eachListLike (http://localhost:8080/node_modules/can-reflect/reflections/shape/shape.js:376:17)
at Object.eachIndex (http://localhost:8080/node_modules/can-reflect/reflections/shape/shape.js:338:16)
at Object.eachKey (http://localhost:8080/node_modules/can-reflect/reflections/shape/shape.js:443:16)
at Object.assignDeepMap (http://localhost:8080/node_modules/can-reflect/reflections/shape/shape.js:698:8)
Hot realoding 不再起作用。这似乎来自steal.js,我不知道这与我的代码有什么关系。难道这个问题发生在工作线程中......?
这是我的 package.json:
...
"dependencies": {
"can-ajax": "^1.1.4",
"can-component": "^3.3.10",
"can-connect": "^1.5.9",
"can-define": "^1.5.5",
"can-route": "^3.2.3",
"can-route-pushstate": "^3.1.2",
"can-set": "^1.3.2",
"can-stache": "^3.11.1",
"can-view-autorender": "^3.1.1",
"can-zone": "^0.6.13",
"done-autorender": "^1.4.0",
"done-component": "^1.0.0",
"done-css": "^3.0.1",
"done-serve": "^1.5.0",
"generator-donejs": "^1.0.7",
"lodash": "^4.17.5",
"steal": "^1.5.15",
"steal-less": "^1.2.0",
"steal-stache": "^3.1.2"
},
"devDependencies": {
"can-fixture": "^1.1.1",
"donejs-cli": "^1.0.0",
"funcunit": "^3.2.0",
"steal-qunit": "^1.0.1",
"steal-tools": "^1.9.1",
"testee": "^0.3.0"
}
...
节点:
node --version
v8.9.2
npm --version
5.5.1
操作系统:
ver
Microsoft Windows [Version 10.0.15063]