我一直在处理这个问题,所以任何帮助都非常感谢.所以,我正在下载一个文件并使用PhantomJS和CasperJS保存它.我要指出它们不是问题.下载文件没有问题.
问题是NodeJS在下载后无法识别或打开文件.我不能fs.stat,fs.open等.什么都行不通.
我将在一秒钟内分享代码,但这是日志:
Here: bdTcK6hSdownload.csv
[ '2puzZMeLdownload.csv',
'2s5ICbKNdownload.csv',
'bdTcK6hSdownload.csv',
'izIfagwCdownload.csv' ]
fs.js:230
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
Error: ENOENT, no such file or directory './caspertemp/bdTcK6hSdownload.csv'
at Object.openSync (fs.js:230:18)
at Object.processCSV (/Users/Home/dev/node_modules/inviter/index.js:64:29)
at /Users/Home/dev/node_modules/inviter/index.js:36:33
at ChildProcess.exithandler (child_process.js:281:7)
at ChildProcess.emit (events.js:70:17)
at maybeExit (child_process.js:361:16)
at Process.onexit (child_process.js:397:5)
Run Code Online (Sandbox Code Playgroud)
如您所见,我打印出创建的文件名,然后打印目录的内容,然后尝试打开该文件.如您所见,bdTcK6hSdownload.csv存在于目录中,但在打开时失败.
简单的代码片段在这里:
console.log('Here: ' + filename);
filenames = fs.readdirSync('./caspertemp/');
console.log(filenames);
var fd = fs.openSync('./caspertemp/' + filename, 'r');
console.log(fd);
Run Code Online (Sandbox Code Playgroud)
在此之前和之后还有更多的事情发生,但由于这个基本功能失败,所以没有任何重要事项.请帮忙!这已经唠叨了几个星期.
我有一个奇怪的问题,我还没有弄清楚.这很简单,这可能就是我遇到麻烦的原因:)
首先,这是路由表......
routes: {
'': 'root', //called
'report': 'report', // called
'report/add': 'reportAdd', // not called
'report/print': 'reportPrint', // not called
'report/settings': 'reportSettings', // not called
},
Run Code Online (Sandbox Code Playgroud)
你会看到我标记哪些是有效的,哪些不是.问题归结为所有子路由(即report/add)不匹配.
在main.js中正确调用骨干历史记录,如下所示:
app.Router = new Router();
Backbone.history.start({ pushState: true });
Run Code Online (Sandbox Code Playgroud)
显然,这是在正确的位置,因为路线工作不是子路线.我已经尝试过没有运气的root选择Backbone.history和沉默parameter.
我想这是一个配置/设置问题,但我找不到任何答案.我究竟做错了什么?任何帮助深表感谢.
顺便说一下,我使用的是requirejs和Backbone Boilerplate,但我不知道这会有什么影响.
更新:虽然提供的答案在技术上是正确的,但问题在于Backbone Boilerplate.有关说明,请参阅此博客文章的底部.我和那里的第一个评论者有同样的问题.
我已经在OAuth的第1步中检索了授权代码而没有任何问题,但是对于我的生活,我无法完成一个帖子来获取访问令牌.我总是得到同样的错误:
content: "{"error":"invalid_request","error_description":"Could not find Shopify API appli... (length: 103)"
这是我的代码看起来像... Meteor.http.post是一个标准的发布请求.我没有运气就尝试过各种各样的组合.我正在开发localhost:
var url = 'https://' + shopName + '/admin/oauth/access_token';
var data = { client_id: apiKey, client_secret: secret, code: code };
Meteor.http.post(url, data,
function(error, result) {
debugger;
});
Run Code Online (Sandbox Code Playgroud)
Meteor.post是此处记录的标准服务器端发布请求.我尝试过params(比如Node Wrapper),一个数组(比如PHP)和其他东西的组合.我不知道.
是因为我正在开发localhost,而服务器调用现在需要https吗?我的帖子数据结构错了吗?
我做错了什么其他的想法?
这是一个要点:https://gist.github.com/973e70bde8e6a530c489
我有两个场景.一个工作,一个失败,即使代码完全相同.
ENOENT,没有这样的文件或目录'/Users/Home/dev/csv/TwFrI5vhdownload.csv
我已经尝试了超时,外部回调等等.但是对于动态创建的文件,它总是失败.
我在这里错过了什么?文件被锁定了,我不知道吗?
谢谢!
系统:
OSX Lion Node v0.6.7
所以,这有点奇怪.我正在使用Backbone和Backbone.localStorage将远程数据保存到本地存储以进行缓存.很标准的东西.
当我localStorage.clear()在整个商店上运行时,除了具有字符串数组值的键之外,所有值都将永久清除.它会在第一次检查时被清除,但是当存储再次保存时,Backbone.LocalStorage.sync('create', model);之前的值又回到那里.
当然,如果我手动删除Chrome开发者工具中的密钥,那么它就会消失并且不会重新填充.这就好像localStorage.clear()调用仍然使用字符串数组缓存键.我已经确认它最初是在应用启动时清除的.
我会在编辑时发布一些代码和截图,但实际上它非常标准,除了在重新填充密钥后这些值仍然存在的事实.这里有什么想法?
编辑:很多有趣的代码:
采集:
app.DiagnosisCollection = Backbone.Collection.extend({
model: DiagnosisModel,
localStorage: new Backbone.LocalStorage('diagnosis'),
save: function(model) {
Backbone.LocalStorage.sync('create', model);
}
});
Run Code Online (Sandbox Code Playgroud)
模型:
app.DiagnosisModel = Backbone.Model.extend({
urlRoot: app.ApiRoot,
url: app.DiagnosisApi,
initialize: function(options) {
if(!options.query) {
throw 'query must be passed to diagnosisModel';
}
this.local = false;
this._query = options.query;
},
sync: function(method, model, options) {
var diagnosisKey = localStorage.getItem('diagnosis');
var index, diagnosisStore;
if(diagnosisKey) {
diagnosisKey = diagnosisKey.split(',');
}
index = _.indexOf(diagnosisKey, this._query);
if(index !== …Run Code Online (Sandbox Code Playgroud) 在Backbone中,我正在使用新Backbone.listenTo事件.我的一个实例让听众附加了三个不同的事件,例如:
this.listenTo(this._Collection, 'reset add change', this._setCollection);
Run Code Online (Sandbox Code Playgroud)
当它被认为是适当的时候被称为并且那里没有问题.我不知道的是如何找出触发了哪个事件.我可以使用以下方法访问e参数:
_setCollection: function(e) {
// Do fun stuff
}
Run Code Online (Sandbox Code Playgroud)
问题是e参数只发送集合的副本,而没有提到实际触发了什么事件.我试过了e.type,e.target但那些物品不存在.以下是eChrome Dev工具中对象的副本:
_byCid: Object
_byId: Object
_events: Object
add: Array[1]
change: Array[1]
remove: Array[1]
reset: Array[1]
__proto__: Object
_listenerId: "l16"
length: 3
models: Array[3]
Run Code Online (Sandbox Code Playgroud)
如何找到触发的事件?
编辑:答案澄清:尽管标记的答案在技术上是正确的,正如mu_is_too_short所指出的,正确答案是使用多个处理程序而不执行此类"chicanery"
javascript backbone.js backbone-events backbone.js-collections
这非常奇怪.我有一个基本的Bootstrap模式,没有花哨的东西正在进行,并input type=file没有在其中工作.单击它时,没有任何反应.如果文件输入移到模态之外并移到页面上,则没有问题.
这是参考的模态代码:
<div id="addImageModal" class="modal hide fade" data-toggle="modal">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
x
</button>
<h4>Add Drawing Image</h4>
</div>
<div class="modal-body">
<div class="form-horizontal">
<div class="control-group">
<label class="control-label" for="inputDisplayName">Display Name</label>
<div class="controls">
<input id="inputDisplayName" type="text" placeholder="">
</div>
</div>
<div class="control-group">
<div id="previewImage"></div>
</div>
<div class="control-group">
<input type="file" name="files[]" multiple="">
</div>
</div>
</div>
<div class="modal-footer">
<a href="#" data-dismiss="modal" class="btn">Cancel</a>
<a href="#" class="btn btn-primary btnUploadImage">Upload</a>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
真奇怪的问题.有任何想法吗?
编辑:它是Bootstrap 2.3.1,我已经尝试在输入上设置z-index以获得乐趣,它没有任何区别.
我今天正在阅读有关跨站点脚本(XSS)攻击的一些内容.似乎Backbone已经model.escape('attr')内置并且我可以告诉它应该始终使用而不是model.get('attr')防止这些攻击.
我做了一些初步搜索,但没有找到任何类型的建议.model.escape('attr')从模型中检索值时,我是否应始终使用?
这太奇怪了,我不知道为什么这个简单的场景不起作用.在使用jQuery和Backbone之后,我仍然是Angular的新手.
这是代码的基本结构......
<div class="span10" ng-controller="ClientCtrl" ng-hide="addClient">
<button ng-click="addClient = true" class="btn btn-primary">
Add new Client
</button>
</div>
<div class="span10" ng-controller="ClientCtrl" ng-show="addClient">
<div ng-include src="'views/partials/client.html'"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
预期的行为是单击"添加新客户端"按钮将显示第二个div.实际行为是第一个div被隐藏(应该如此),但第二个div保持隐藏状态.控制器中没有控制行为.
我已经尝试了一个范围功能,在控制器中的属性中设置初始值以及其他许多没有运气的东西.我究竟做错了什么?我已经检查过以确保它们在相同的范围内并且"似乎"不是问题所在.感谢您的帮助,因为这让我发疯.
我们已经让Facebook在我们的主桌面应用程序上运行而没有任何问题.当我向移动网站添加相同的设置代码时,我收到了来自JavaScript SDK的错误:
Received message of type object from https://s-static.ak.facebook.com, expected a string
然后,我从此处将设置代码更改为完全复制:https://developers.facebook.com/docs/guides/mobile/web/并收到完全相同的消息.
此错误仅在Chrome开发者工具或iOS模拟器中用户代理为iOS或Android时显示.当它从桌面运行时,我们没有看到此错误.
知道这里发生了什么吗?
谢谢 :)
所以我有一个拥有数千个值的数组.分隔符是相同的,内容是所有数字.这是一个简单的数组.
例..
[491353764,202825540,338196858]
Run Code Online (Sandbox Code Playgroud)
想象一下,这是15000个值.我需要将数组拆分成100个字符串的多个组.
我用这个得到了前100个罚款:
ids = ids.toString();
ids = ids.split(',', 100);
console.log(ids.toString());
Run Code Online (Sandbox Code Playgroud)
我知道这是基本的东西,但我找不到任何可以让我多次分组的东西.我是否专注于错误的事情,认为某些版本split会做这个工作?我需要通过循环吗?
我一直在研究这个主题,但找不到Javascript SDK的任何内容.我找到了PHP和C#的例子,但我仍然不确定Javascript SDK.据我所知,您设置了一个包含JS SDK的页面,将其放入deauthorize回调URL并订阅该页面上的authResponseChange事件.
这是我能说的最好的,但是我没有找到任何例子或确认这种方法是否有效.如果可以提供任何精彩的例子.
我在Javascript测试控制台上测试了这个:http://developers.facebook.com/tools/console/但该方法使用了旧的rest API的撤销授权.我们希望使用取消授权回调URL从用户帐户中删除Facebook关联.