你好,当我在开发者模式下运行这个项目时(grunt服务器)https://github.com/kennethlynne/generator-angular-xl一切正常但是当我在生产模式下运行它时(grunt build)我得到了一个`
Uncaught SyntaxError:在严格模式代码中,函数只能是 在顶层声明或在另一个函数中立即声明
任何人都知道发生了什么事吗? 谢谢,
聚苯乙烯。我发布了一个项目链接,而不是代码,因为JS被分成许多文件。
答案 0 :(得分:18)
这就是错误信息所说的内容:
函数只能在顶层声明或在另一个函数中立即声明
你一定不能在任何其他块中放置一个函数声明,比如if语句或for循环。
示例:
'use strict';
function some() {
function okay() {
}
let x = 1;
function no_problem() {
}
if (x == 1) {
function BOOM() { // <- wrong!
}
}
}
答案 1 :(得分:7)
如上所述,您可以取消注释'use strict';
部分,甚至更好地更改函数语法
而不是
function funcName (param) { }
使用
funcName = function(param) {};
答案 2 :(得分:6)
我解决问题的方法是删除最终缩小脚本中jquery上方的'use strict'
。另一种方法是将jQuery版本更改为没有严格错误的版本
编辑:毕竟这是版本1.11上的jQuery缩小错误,对此的一个简单修复是转到您的Grunt文件并注释掉该行
banner: "'use strict';\n"
答案 3 :(得分:1)
除了正确答案之外,在某些特定情况下,可能也是FireFox中的错误。
我们在一个用户的计算机上收到此错误消息。在JavaScript文件中,有一个use strict
行 引发此错误的方法(不应受此影响)
这恰好是FireFox版本45.9.0(也可能是旧版本)的问题。将Firefox更新到最新版本(目前为52.4)解决了这个问题。
答案 4 :(得分:0)
有趣的是,我的原因是因为emacs
被放在了新行上,但是我返回了一个对象,所以我改变了
来自
{
到
"use strict";
var funcName1 = function(){
/* some code*/
return
{ // note this bracket
funcName2:function(){/* some code*/},
};
}