javascript - 当我启用布局时,为什么 sails.js 会引发如此多的浏览器控制台错误?

标签 javascript node.js gruntjs sails.js waterline

请缓慢而清晰地说话,并使用简单的词语——我以前没有使用过node.js、sails.js、ejs 或grunt 的经验。我有 PHP 背景。

我们正在开发一个基于 sails.js 和 ejs 的网站。当我们在 config/views.js 中启用布局时,我们会在浏览器控制台中收到很多错误。第一个在 Firefox 中看起来像这样:

ReferenceError: module is not defined
module.exports = function (grunt) {

...在 Safari 中就像这样:

ReferenceError: Can't find variable: module
global codeGruntfile.js:14

但是,grunt 似乎正在工作,至少部分地:LESS 编译正常,并且布局正在工作。如果我们禁用布局(在 config/views.js 中设置“layout:false”并重新升 sails ),错误就会消失,但 LESS 和布局将不起作用。

我可以解决没有包含布局的问题,但如果可能的话,我真的很想使用 LESS。不管怎样,我只想按照这个框架的预期使用方式来使用它。

抱歉,这也是我在这里的第一个问题(因为潜伏已经足够多年了),而且我可能还没有发布足够的技术信息。以下是启用 Sails 时 Safari 控制台窗口向我吐出的所有内容(尽管我预计页面下方的大多数错误都源于单个配置错误)。如果我可以提供更多信息,请告诉我。

谢谢,呃。

[Error] ReferenceError: Can't find variable: module (Gruntfile.js, line 14)
[Error] ReferenceError: Can't find variable: angular
    (anonymous function) (app.js, line 21)
[Error] TypeError: 'undefined' is not an object (evaluating '$.ajaxSetup') (jquery.postmessage-transport.js, line 50)
[Error] ReferenceError: Can't find variable: angular (jquery.fileupload-angular.js, line 33)
[Error] TypeError: 'undefined' is not an object (evaluating '$.blueimp') (jquery.fileupload-audio.js, line 35)
[Error] TypeError: 'undefined' is not an object (evaluating '$.blueimp')
    (anonymous function) (jquery.fileupload-image.js, line 39)
    (anonymous function) (jquery.fileupload-image.js, line 30)
[Error] TypeError: 'undefined' is not an object (evaluating '$.widget') (jquery.fileupload-jquery-ui.js, line 27)
[Error] TypeError: 'undefined' is not an object (evaluating '$.blueimp') (jquery.fileupload-process.js, line 32)
[Error] TypeError: 'undefined' is not an object (evaluating '$.blueimp') (jquery.fileupload-ui.js, line 37)
[Error] TypeError: 'undefined' is not an object (evaluating '$.blueimp') (jquery.fileupload-validate.js, line 32)
[Error] TypeError: 'undefined' is not an object (evaluating '$.blueimp') (jquery.fileupload-video.js, line 35)
[Error] TypeError: 'undefined' is not an object (evaluating '$.support') (jquery.fileupload.js, line 32)
[Error] TypeError: 'undefined' is not an object (evaluating '$.ajaxTransport')
    (anonymous function) (jquery.iframe-transport.js, line 39)
    (anonymous function) (jquery.iframe-transport.js, line 21)
[Error] ReferenceError: Can't find variable: $ (main.js, line 14)
[Error] ReferenceError: Can't find variable: jQuery (jquery.ui.widget.js, line 18)
[Error] SyntaxError: Invalid character: '#' (server.js, line 1)
[Error] ReferenceError: Can't find variable: $ (test.js, line 14)
[Error] ReferenceError: Can't find variable: jwplayer (jwplayer.html5.js, line 1)
[Error] Failed to load resource: the server responded with a status of 404 (Not Found) (jquery-1.10.2.min.map, line 0)
[Log] 
    |>    
  \___/  
[Log]  `io.socket` connected successfully.
 (for help, see: http://sailsjs.org/#!documentation/reference/BrowserSDK/BrowserSDK.html)

编辑:按照评论中的建议运行“npm 缓存清除”和“npm install”会导致以下结果:

npm WARN package.json crypto@0.0.3 crypto is also the name of a node core module.
npm WARN unmet dependency /home/ubuntu/git/(obscured)/frontend/node_modules/sails-disk/node_modules/waterline-criteria requires lodash@'~2.4.1' but will load
npm WARN unmet dependency undefined,
npm WARN unmet dependency which is version undefined
npm WARN unmet dependency /home/ubuntu/git/(obscured)/frontend/node_modules/sails-disk/node_modules/waterline-cursor requires lodash@'~2.4.1' but will load
npm WARN unmet dependency undefined,
npm WARN unmet dependency which is version undefined

额外编辑2014/09/15:

@KevinKao - 是的,我们使用的是 Ubuntu。我运行了 aptitude,它警告了以下依赖问题,并给了我一个降级 Nodejs 的选项(从 0.10.31 到 0.10.25),但没有选项降级 npm。

The following packages have unmet dependencies:
nodejs : Conflicts: npm but 1.3.10~dfsg-1 is to be installed.

The following actions will resolve these dependencies:

Install the following packages:

1)     nodejs-dev [0.10.25~dfsg2-2ubuntu1 (trusty)]                             

Downgrade the following packages:  

2)     nodejs [0.10.31-1chl1~trusty1 (now, trusty) -> 0.10.25~dfsg2-2ubuntu1 (tr //oops truncated it

我再次运行“aptitude install npm”只是为了好玩,没有收到任何警告,但是当我运行“npm install”时,我收到以下警告:

npm WARN deprecated grunt-lib-contrib@0.7.1: DEPRECATED. See readme: https://github.com/gruntjs/grunt-lib-contrib
npm WARN deprecated guid@0.0.12: Please use node-uuid instead. It is much better.

无论如何,我继续完成了您的过程,但遇到了与一开始相同的浏览器控制台错误。

最佳答案

我的同事将整个文件夹移到了 asset/js 中。我刚刚将其从 Assets 中移出,错误就消失了。 Layout.ejs 包含该文件夹中的所有内容;因此出现了问题。

关于javascript - 当我启用布局时,为什么 sails.js 会引发如此多的浏览器控制台错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25779768/

相关文章:

javascript - 在 Angular 中通过 $scope 安全地使用 eval()

javascript - 选择具有相同名称但大写的对象属性

node.js - 使用 Grunt 将文件复制到项目外部的目录

javascript - 在 Javascript 中使用带有计时器的随机数生成器每次都会给出相同的数字

javascript - jQuery 在带有属性的 li 元素之后插入

php - php 和 node.js 之间 pbkdf2 的差异

javascript - 我如何使用 Node.js Express 压缩中间件?

css - Grunt LiveReload 真的很慢

javascript - 在 sonarqube 中导入 mocha 单元测试结果

javascript - 我在 JS 代码中收到 "Maximum call stack size exceeded"错误,但我不明白为什么。有人可以帮我吗?