平均堆栈轮询应用程序不显示数据,可能不保存它

Posted

技术标签:

【中文标题】平均堆栈轮询应用程序不显示数据,可能不保存它【英文标题】:MEAN stack polling application not displaying data, possibly not saving it 【发布时间】:2015-01-30 22:51:23 【问题描述】:

您好,我正在 MEAN 堆栈上创建一个简单的轮询应用程序。我正在使用this tutorial 创建我的应用程序。我目前刚刚完成第 3 步,但我的应用程序没有按预期运行。

当我在 Eclipse 中调试时,我收到的是:

Jshint 告诉我 Angular 没有在我的 services.js、app.js、controller.js 中定义。正如其他示例所建议的那样,我已尝试将脚本标签移动到各处,以各种顺序重新排列它们,但没有一个删除此错误。

编辑 我已将来自 jack_the_ripper 的信息包含到我的 .jshintrc 文件中。我相信我仍然做错了什么。这是我要求的代码副本。

    
"bitwise" : true, // Prohibit bitwise operators (&, |, ^, etc.).
"curly" : true, // Require  for every new block or scope.
"eqeqeq" : true, // Require triple equals i.e. `===`.
"forin" : true, // Tolerate `for in` loops without `hasOwnPrototype`.
"immed" : true, // Require immediate invocations to be wrapped in parens e.g. `( function()() );`
"latedef" : true, // Prohibit variable use before definition.
"newcap" : true, // Require capitalization of all constructor functions e.g. `new F()`.
"noarg" : true, // Prohibit use of `arguments.caller` and `arguments.callee`.
"noempty" : true, // Prohibit use of empty blocks.
"nonew" : true, // Prohibit use of constructors for side-effects.
"plusplus" : false, // Prohibit use of `++` & `--`. //coding style related only
"regexp" : true, // Prohibit `.` and `[^...]` in regular expressions.
"undef" : true, // Require all non-global variables be declared before they are used.
"strict" : false, // Require `use strict` pragma in every file.
"trailing" : true, // Prohibit trailing whitespaces.


"asi" : false, // Tolerate Automatic Semicolon Insertion (no semicolons).
"boss" : false, // Tolerate assignments inside if, for & while. Usually conditions & loops are for comparison, not assignments.
"debug" : false, // Allow debugger statements e.g. browser breakpoints.
"eqnull" : false, // Tolerate use of `== null`.
"es5" : true, // Allow EcmaScript 5 syntax. // es5 is default https://github.com/jshint/jshint/issues/1411
"esnext" : false, // Allow ES.next (ECMAScript 6) specific features such as `const` and `let`.
"evil" : false, // Tolerate use of `eval`.
"expr" : false, // Tolerate `ExpressionStatement` as Programs.
"funcscope" : false, // Tolerate declarations of variables inside of control structures while accessing them later from the outside.
"globalstrict" : false, // Allow global "use strict" (also enables 'strict').
"iterator" : false, // Allow usage of __iterator__ property.
"lastsemic" : false, // Tolerat missing semicolons when the it is omitted for the last statement in a one-line block.
"laxbreak" : false, // Tolerate unsafe line breaks e.g. `return [\n] x` without semicolons.
"laxcomma" : true, // Suppress warnings about comma-first coding style.
"loopfunc" : false, // Allow functions to be defined within loops.
"maxerr" : 100, // This options allows you to set the maximum amount of warnings JSHint will produce before giving up. Default is 50.
"moz" : false, // This options tells JSHint that your code uses Mozilla javascript extensions. Unless you develop specifically for the Firefox web browser you don't need this option.
"multistr" : false, // Tolerate multi-line strings.
"onecase" : false, // Tolerate switches with just one case.
"proto" : false, // Tolerate __proto__ property. This property is deprecated.
"regexdash" : false, // Tolerate unescaped last dash i.e. `[-...]`.
"scripturl" : false, // Tolerate script-targeted URLs.
"smarttabs" : false, // Tolerate mixed tabs and spaces when the latter are used for alignmnent only.
"shadow" : false, // Allows re-define variables later in code e.g. `var x=1; x=2;`.
"sub" : false, // Tolerate all forms of subscript notation besides dot notation e.g. `dict['key']` instead of `dict.key`.
"supernew" : false, // Tolerate `new function ()  ... ;` and `new Object;`.
"validthis" : false, // Tolerate strict violations when the code is running in strict mode and you use this in a non-constructor function.
"couch" : false, // Enable globals exposed by CouchDB.
"devel" : false, // Allow development statements e.g. `console.log();`.
"dojo" : false, // Enable globals exposed by Dojo Toolkit.
"jquery" : false, // Enable globals exposed by jQuery JavaScript library.
"mootools" : false, // Enable globals exposed by MooTools JavaScript framework.
"node" : true, // Enable globals available when code is running inside of the NodeJS runtime environment.
"nonstandard" : false, // Define non-standard but widely adopted globals such as escape and unescape.
"phantom" : false, //?since version? This option defines globals available when your core is running inside of the PhantomJS runtime environment.
"prototypejs" : false, // Enable globals exposed by Prototype JavaScript framework.
"rhino" : false, // Enable globals available when your code is running inside of the Rhino runtime environment.
"worker" : false, //?since version? This option defines globals available when your code is running inside of a Web Worker.
"wsh" : false, // Enable globals available when your code is running as a script for the Windows Script Host.
"yui" : false, //?since version? This option defines globals exposed by the YUI JavaScript framework.

"nomen" : false, // Prohibit use of initial or trailing underbars in names.
"onevar" : false, // Allow only one `var` statement per function.
"passfail" : false, // Stop on first error.
"white" : false, // Check against strict whitespace and indentation rules.
"globals":  // Globals variables.
    "jasmine": true,
    "angular": true,
    "ApplicationConfiguration": true,
    "browser": true,
    "element": true,
    "io":true,
    "_":false,
    "$":false
    

    

我收到的另一个错误是当我尝试在 chrome 中进行检查时。控制台响应:

错误:[$resource:badcfg] 操作 query 的资源配置错误。预期的响应包含一个数组但得到了一个对象。我确实相信这是我麻烦的根源。它位于 .\public\js\services.js 文件中,但是尽管到目前为止我已经测试了许多在线提供的解决方案,但一直未能找到解决此错误的方法。

Edit2 我的 services.js 代码不起作用。

     angular.module('pollServices', ['ngResource']).
      factory('Poll', function($resource) 
        return $resource('polls/:pollId', , 
          query:  method: 'GET', params:  pollId: 'polls' , isArray: true 
        );
      );

当我在 Batarang 中检查它时,我在民意调查列表范围内的模型始终为空,即使在我创建它们之后也是如此。

如果您有空闲时间并且不介意查看我的代码,我已将其上传到git repository。

提前感谢您的宝贵时间。

此致,

弗雷德克

【问题讨论】:

在您的服务资源中将 isArray 更改为 false,我没有看到您的 .jshintrc 文件有任何重大问题,请尝试返回原始版本并仅添加您需要的元素逐步修复和添加,在您了解之后继续添加选项并尝试对每个选项进行故障排除。 当我将值更改为 false 时,除了使用 Batarang 检查变量时,范围变量从 polls: [ ] 更改为 pastebin.com/g5SyNc2A ,这似乎是我的列表.html 部分垂直列出,并且“错误:[$resource:badcfg] 操作查询的资源配置错误。预期的响应包含一个数组但得到了一个对象”消失了。也感谢你帮我看看这个 jack.the.ripper。 这也发生在我身上,这很奇怪,我建议将您的列表对象包装到另一个对象中,例如 returnvalue: [arrayToReturn] 并从您的休息端点返回包装的对象,还要记住配置为数组:false 【参考方案1】:

您应该只包含您的应用程序的相关代码到问题中,因为如果您缩小范围更容易发现问题,无论如何看起来您是作为 angular.js 开发人员,您会经常遇到一些常见问题。

我在引用你的问题:

Jshint 告诉我 Angular 没有在我的 services.js 中定义, 应用程序.js,控制器.js。我试过移动脚本标签 与其他示例一样,以各种顺序重新排列它们的地方 建议,但没有人消除此错误。

在您的根文件夹中创建一个名为 .jshintrc 的文件,将 angular 添加到您的全局变量中,如下所示:

"globals":  // Globals variables.
        "jasmine": true,
        "angular": true,
        "ApplicationConfiguration": true,
        "browser": true,
        "element": true,
        "io":true,
        "_":false,
        "$":false
    

动作查询的资源配置错误。预期回应 包含一个数组但有一个对象。

这是一个常见的场景,当您查询您的 REST API 时,您应该配置您的 $resource 服务来检索一个数组或单个对象,在这种情况下您应该使用 isArray: false 在您的配置中,有关更多信息,请查看资源 documentation 以了解如何设置您的 $resource

【讨论】:

以上是关于平均堆栈轮询应用程序不显示数据,可能不保存它的主要内容,如果未能解决你的问题,请参考以下文章

如何在平均堆栈应用程序中处理实时消息?

如何正确对接平均堆栈应用程序?

如何接收 OpsWorks 部署通知?

在生产中运行平均堆栈应用程序

在 Heroku 问题上部署平均堆栈应用程序

在heroku中部署平均堆栈应用程序时出错