我正在尝试安装npm包rails-csrf.rails-csrf github站点上的说明说"将之前的模型添加到应用程序路由中,以便自动获取令牌".申请途径在哪里?
我认为它应该是app/routes/application.js但该文件不存在.不应该使用ember new命令默认创建吗?
我有一个使用的Ember应用程序ember-cli,我正在使用ember-qunit测试适配器编写我的测试,并testem按照ember-cli文档中的说明在浏览器中运行它们.虽然当我对我的应用程序感兴趣时,谷歌浏览器中的调试工作正常,但在运行测试时我无法使用许多调试功能,如断点.
我经常遇到一个问题,即我的测试失败,尽管我的实际应用程序似乎正常工作,并且在我的测试运行时调查我想要逐步执行代码的问题.
但当我进入我出现的代码时,vendor.js我只是看到了以下内容vendor.js:
// Please wait a bit.
// Compiled script is not shown while source map is being loaded!
Run Code Online (Sandbox Code Playgroud)
这两行是文件的第6行和第7行.前面的行是空白的,这两行是文件中的最后一行.调试器将文件的第一行突出显示,就好像它是源中的当前位置,但由于某种原因它无法显示源.
我可以继续执行代码,但我看不到任何东西.
但是,如果我vendor.js在开发人员工具源文件列表的源列表中找到它,那么它将作为单独的源选项卡打开,我可以看到我的所有代码.在这一点上,我有两个标签vendor.js,一个标签包含我所有的供应商资产,另一个标有上面引用的那些标签.
我猜测我的测试服务方式和我的应用程序在开发环境中的服务方式之间存在一些不同之处.
我使用以下版本的东西:
ember 1.9.1
ember-data 1.0.0-beta.14.1
ember-cli 0.1.9
qunit 1.17.1
ember-qunit 0.2.0
testem 0.6.33
Run Code Online (Sandbox Code Playgroud)
虽然我已经开了一堆,但我并没有任何关于问题源于何处的线索.也许它与如何testem运行测试有关?或者它可能是我的测试中包含的东西有一个混乱的源地图?
我感谢任何帮助或想法.
我正在尝试将Underscore作为命名模块导入到我的Ember CLI插件中.看一下指南的标准AMD资产部分,看起来应该可行:
app.import(app.bowerDirectory + '/underscore/underscore.js', {
exports: {
'underscore': ['default']
}
});
Run Code Online (Sandbox Code Playgroud)
以下是Underscore的来源:
define('underscore', [], function() {
return _;
});
Run Code Online (Sandbox Code Playgroud)
我试图在我的一个文件中导入它/addon/utils/class.js:
import _ from 'underscore';
Run Code Online (Sandbox Code Playgroud)
并得到一个错误:
无法找到
underscore从中导入的模块ember-cli-mirage/utils/class
我做错了什么?
在我的应用程序的适配器中,我将根据ajax错误返回错误代码.我正在应用程序路由的错误方法中处理这些.如果我通过link-to访问路由,这非常有用.但是,如果我刷新路径或只输入URL,则不会调用我的应用程序的错误处理程序.有没有一个地方我可以把这个错误处理保证每次运行?我真的不想在每一条路线中实现相同的"if 401,show login"代码.
路线/ application.js中:
export default Ember.Route.extend({
actions: {
error: function(reason) {
if (reason === 401) {
alert('401');
this.send('showLogin');
}
},
Run Code Online (Sandbox Code Playgroud)
适配器/ application.js中:
import DS from 'ember-data';
export default DS.ActiveModelAdapter.extend({
'namespace': '',
ajaxError: function(jqXHR) {
var error = this._super(jqXHR);
if (jqXHR && jqXHR.status === 401) {
return 401;
}
return error;
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:
上面的代码几乎对我有用.我点击的主要问题是在刷新或点击URL时没有捕到this.send('showLogin').将此更改为转换可以很好地工作:
import Ember from 'ember';
export default Ember.Route.extend(ApplicationRouteMixin, {
actions: {
error: function(reason) {
if (reason === 401) {
this.transitionTo('login');
}
},
...
Run Code Online (Sandbox Code Playgroud) 我在提到Ember 1.12中引入的这一特定弃用
lookup是在注册表上调用的.该initializerAPI不再接收一个容器,你应该使用一个instanceInitializer从容器中查找对象
我查看了指南,但我不确定如何解决这个问题.
这是我目前的代码片段
initialize = (container, app) ->
auth = container.lookup('auth-manager:main')
local_config = ($.ajax
type: 'GET'
url: '/config.json'
async:false
).responseJSON
external_config = ($.ajax
type: 'GET'
url: local_config.crm.provisioning.url + '/v1/configurations'
dataType: 'json'
headers:
'Authorization': auth.get 'token'
'Accept': 'application/json'
'Content-Type': 'application/json'
async: false
error: (e)->
if e.status == 401
window.location.href = window.location.origin + '/auth.html?src_url=' + window.location.href
).responseJSON
ConfigInitializer =
name: 'config'
after: 'auth-manager'
initialize: initialize
Run Code Online (Sandbox Code Playgroud)
问题是我需要auth-manager初始化程序才能初始化我的config初始化程序.我的大多数其他初始化程序都需要config和auth-manager初始化程序来获取access_token和连接端点.
在ember-cli项目中,是否应该有一个用于实例初始化程序的文件和一个用于初始化程序注册的文件? …
我创建了一个带有a的ember应用程序component,我试图找出如何加载存储在vendor组件中app 的dir中的外部JS文件.该组件的代码如下所示,
// app/components/bubbles-page.js
import Ember from 'ember';
export default Ember.Component.extend({
didInsertElement: function() {
// this.$() is a scoped selector to the current view
// bubbles();
// window.onload = bubbles();
// the below line gives the following error,
this.$().bubbles();
// ERROR
//TypeError: this.$(...).bubbles is not a function
// END ERROR
}
});
Run Code Online (Sandbox Code Playgroud)
而ember-cli-build.js如下所示,
/* global require, module */
var EmberApp = require('ember-cli/lib/broccoli/ember-app');
module.exports = function(defaults) {
var app = new EmberApp(defaults, {
// Add …Run Code Online (Sandbox Code Playgroud) 在我的ember-cli app,.watchman配置文件中,我已经提到了在观看时要忽略的目录,比如"ignore_dirs": ["tmp"].现在我想在我的app目录之外的目录中查看文件.有什么办法吗?
当您这样做时:
ember build --environment="production"
Run Code Online (Sandbox Code Playgroud)
该environment参数可用于config/environment.js:
module.exports = function(environment) {
...
};
Run Code Online (Sandbox Code Playgroud)
我的应用有一些要求取决于环境的要求prepend(在中ember-cli-build.js):
var STATIC_URL = "TODO"; // This depends on the deploy "environment" parameter
module.exports = function(defaults) {
var app = new EmberApp(defaults, {
fingerprint: {
enabled: true,
prepend: STATIC_URL,
},
});
return app.toTree();
};
Run Code Online (Sandbox Code Playgroud)
如何从中访问环境参数ember-cli-build.js?
我的版本:
» ember --version
version: 1.13.13
node: 0.12.2
npm: 2.14.10
os: linux x64
Run Code Online (Sandbox Code Playgroud) 我有一个简单的组件集成测试:
test('it throws error my-custom-input is called', function(assert) {
assert.throws(() => {
this.render(hbs`{{my-custom-input}}`);
}, /my-custom-input component error/, 'Error must have been thrown');
});
Run Code Online (Sandbox Code Playgroud)
component.js的源代码如下:
export default Ember.Component.extend({
layout,
init() {
this._super(...arguments);
throw 'my-custom-input component error';
}
}
Run Code Online (Sandbox Code Playgroud)
虽然我的ember-cli版本是2.3.0,但测试正在通过.但是,在我将我的ember-cli版本更新为2.11.1后,测试没有通过.错误是:
actual: >
false
expected: >
true
Run Code Online (Sandbox Code Playgroud)
为什么ember render开始吞下抛出的异常?
我们从一个新的应用程序开始,使用Ember 3.8和bootstrap / SASS。似乎有两个可用插件在Ember中支持引导程序,ember-boostrap和ember-cli-bootrap-sassy。
尽管前者为大多数bootstrap功能实现了ember组件,并通过其自己的实现“替换”了原始的bootstrap.js,但对于后者,看来我仍然可以使用所有原始的组件和js实现。
乍一看,我会更熟悉ember-cli-bootrap-sassy,因为我仍然可以使用Web上的所有引导示例,并且拥有“定制”版本的bootstrap.js对我来说似乎有点违反直觉。另外,ember-bootstrap的所有引导功能都没有实现,但是我仍然需要?看来我可能会以使用ember-bootstrap的应用程序结尾,但是对于未实现的事情还使用了各种“变通方法”。
由于我在该领域没有太多经验,因此很高兴获得专家的一些建议和见解。
ember-cli ×10
ember.js ×7
ember-qunit ×2
ajax ×1
coffeescript ×1
ember-addon ×1
ember-data ×1
javascript ×1
qunit ×1
source-maps ×1
testem ×1
watchman ×1