小编Bra*_*don的帖子

NodeJS fs.open在现有文件上失败(不是路径问题)

我一直在处理这个问题,所以任何帮助都非常感谢.所以,我正在下载一个文件并使用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)

在此之前和之后还有更多的事情发生,但由于这个基本功能失败,所以没有任何重要事项.请帮忙!这已经唠叨了几个星期.

javascript file-io fs node.js

13
推荐指数
1
解决办法
3万
查看次数

骨干路由未被调用

我有一个奇怪的问题,我还没有弄清楚.这很简单,这可能就是我遇到麻烦的原因:)

首先,这是路由表......

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.有关说明,请参阅此博客文章的底部.我和那里的第一个评论者有同样的问题.

requirejs backbone.js backbone-boilerplate

10
推荐指数
1
解决办法
1668
查看次数

Shopify:获取OAuth访问令牌的问题

我已经在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吗?我的帖子数据结构错了吗?

我做错了什么其他的想法?

shopify oauth-2.0 meteor

7
推荐指数
1
解决办法
1321
查看次数

文件存在但接收ENOENT错误

这是一个要点:https://gist.github.com/973e70bde8e6a530c489

我有两个场景.一个工作,一个失败,即使代码完全相同.

  1. 获取包装盒上已有的CSV文件并进行解析.完美的工作.没有问题.
  2. 获取刚刚创建的CSV文件并尝试解析它并收到:

    ENOENT,没有这样的文件或目录'/Users/Home/dev/csv/TwFrI5vhdownload.csv

相同的CSV文件格式以及所有这些.无论如何都没关系,因为创建的文件甚至不会打开.即使文件存在,它也会因上述错误而失败.如果我重新启动Node并尝试获取该文件,那么它可以正常工作.如果我在新创建的文件上运行fs.stat则失败.

我已经尝试了超时,外部回调等等.但是对于动态创建的文件,它总是失败.

我在这里错过了什么?文件被锁定了,我不知道吗?

谢谢!

系统:

OSX Lion Node v0.6.7

javascript file-io node.js

5
推荐指数
1
解决办法
2715
查看次数

在明确之后,localStorage会记住以前的值

所以,这有点奇怪.我正在使用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)

javascript local-storage backbone.js

5
推荐指数
1
解决办法
1571
查看次数

如何从Backbone.listenTo查找触发事件?

在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

5
推荐指数
1
解决办法
4328
查看次数

输入类型文件在Bootstrap模式中不起作用

这非常奇怪.我有一个基本的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以获得乐趣,它没有任何区别.

html5 twitter-bootstrap

5
推荐指数
1
解决办法
6472
查看次数

Backbone:应该使用model.escape而不是model.get吗?

我今天正在阅读有关跨站点脚本(XSS)攻击的一些内容.似乎Backbone已经model.escape('attr')内置并且我可以告诉它应该始终使用而不是model.get('attr')防止这些攻击.

我做了一些初步搜索,但没有找到任何类型的建议.model.escape('attr')从模型中检索值时,我是否应始终使用?

javascript xss backbone.js

4
推荐指数
1
解决办法
2885
查看次数

显示隐藏Div AngularJs

这太奇怪了,我不知道为什么这个简单的场景不起作用.在使用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保持隐藏状态.控制器中没有控制行为.

我已经尝试了一个范围功能,在控制器中的属性中设置初始值以及其他许多没有运气的东西.我究竟做错了什么?我已经检查过以确保它们在相同的范围内并且"似乎"不是问题所在.感谢您的帮助,因为这让我发疯.

angularjs

4
推荐指数
1
解决办法
2万
查看次数

Facebook iOS Mobile Web JS SDK错误

我们已经让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时显示.当它从桌面运行时,我们没有看到此错误.

知道这里发生了什么吗?

谢谢 :)

ios facebook-javascript-sdk

2
推荐指数
1
解决办法
2188
查看次数

将数组拆分为100个Javascript的多个字符串

所以我有一个拥有数千个值的数组.分隔符是相同的,内容是所有数字.这是一个简单的数组.

例..

[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 arrays string

1
推荐指数
1
解决办法
1105
查看次数

如何使用Facebook JS SDK取消授权回调URL?

我一直在研究这个主题,但找不到Javascript SDK的任何内容.我找到了PHP和C#的例子,但我仍然不确定Javascript SDK.据我所知,您设置了一个包含JS SDK的页面,将其放入deauthorize回调URL并订阅该页面上的authResponseChange事件.

这是我能说的最好的,但是我没有找到任何例子或确认这种方法是否有效.如果可以提供任何精彩的例子.

我在Javascript测试控制台上测试了这个:http://developers.facebook.com/tools/console/但该方法使用了旧的rest API的撤销授权.我们希望使用取消授权回调URL从用户帐户中删除Facebook关联.

authorization facebook-javascript-sdk

0
推荐指数
2
解决办法
1万
查看次数