GVKun编程网logo

未捕获的SyntaxError:在严格模式代码中,只能在顶级或立即在另一个函数内声明函数

7

对于未捕获的SyntaxError:在严格模式代码中,只能在顶级或立即在另一个函数内声明函数感兴趣的读者,本文将会是一篇不错的选择,并为您提供关于Chrome:未捕获的SyntaxError:输入意外

对于未捕获的SyntaxError:在严格模式代码中,只能在顶级或立即在另一个函数内声明函数感兴趣的读者,本文将会是一篇不错的选择,并为您提供关于Chrome:未捕获的 SyntaxError:输入意外结束、Create-React-App构建-“未捕获的SyntaxError:意外令牌<”、ES6模块导入,给出“未捕获的SyntaxError:意外的标识符”、Javascript / jQuery |未捕获的SyntaxError:意外的输入结束?的有用信息。

本文目录一览:

未捕获的SyntaxError:在严格模式代码中,只能在顶级或立即在另一个函数内声明函数

未捕获的SyntaxError:在严格模式代码中,只能在顶级或立即在另一个函数内声明函数

您好,当我在开发人员模式下运行该项目时(grunt服务器)https://github.com/kennethlynne/generator-
angular-xl一切正常,但是当我在生产模式下运行时(grunt构建),我会得到一个`

未捕获的SyntaxError:在严格模式代码中,只能在顶级或立即在另一个函数内声明函数

任何人都知道发生了什么事吗?谢谢,

附言 由于JS被拆分为许多文件,因此我发布了该项目的链接而不是代码。

答案1

小编典典

我解决问题的方法是删除''use strict''最终缩小的脚本中jquery上方的。另一种方法是将jQuery版本更改为没有严格错误的版本

编辑: 毕竟这是版本1.11的jQuery缩小错误,一个简单的解决方法是转到您的Grunt文件并注释掉该行

banner: "''use strict'';\n"

Chrome:未捕获的 SyntaxError:输入意外结束

Chrome:未捕获的 SyntaxError:输入意外结束

在 Google Chrome 中加载我的页面时,我在控制台中收到一个模糊的错误:

未捕获的 SyntaxError:输入意外结束

我不知道是什么原因造成的。我将如何调试此错误?

答案1

小编典典

这个特殊错误是关于v8的一个令人讨厌的事实。在大多数情况下,您的 JavaScript 以某种方式被破坏了。例如缺少一个}或类似的东西。

给出的示例,这也会产生“意外的输入结束”:

eval(''[{"test": 4}'') // notice the missing ]

但问题的根本原因似乎是请求的 JSON url 有一个 Content-Typetext/htmlChrome 显然试图将其解析为
HTML,然后由于包含的图像标签正在被包含的事实导致输入意外结束解析。

尝试将 Content-Type 设置为text/plain我认为它应该可以解决问题。

尽管如此,V8 可以做得更好,告诉人们输入意外结束的确切 位置。

Create-React-App构建-“未捕获的SyntaxError:意外令牌<”

Create-React-App构建-“未捕获的SyntaxError:意外令牌<”

我意识到这个问题已经被问过多次了,但对我来说却无济于事。

我正在尝试创建create-react-app项目的静态版本,但出现以下错误:

Uncaught SyntaxError: Unexpected token <     1.ca81c833.chunk.js:1Uncaught SyntaxError: Unexpected token <     main.7ced8661.chunk.js:1

由于这些文件已缩小,因此我不确定从哪里开始调试它们。

根据其他SO响应,这是我尝试过的一些事情:

//Original index.html file, which gets included in the built file:<script type="text/babel" src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.min.js"></script>//package.json"babel-preset-es2015": "^6.24.1","babel-preset-react": "^6.24.1",//.babelrc file{  "presets": ["react", "es2015", "stage-1"]}

不知道这是否相关,但是我在我的Express服务器上有这个,我认为这是标准的:

if (process.env.NODE_ENV === "production") {    app.use(express.static(''client/built''));    app.get("*", (req, res) => {        res.sendFile(require(''path'')            .resolve(__dirname, ''client'', ''build'', ''index.html''));    })}

假设这实际上是一个JSX问题,那么整个过程就很混乱-不create-react-app应该自动处理JSX吗?

更新 :我刚刚发布了这个问题,但是已经有了相关的更新。通过运行pm2 servebuild,我可以通过pm2为页面提供静态服务,因此我认为问题可能出在我的服务器配置上。

答案1

小编典典

我最终在这里找到答案:https :
//github.com/facebook/create-react-
app/issues/1812

我从上方修剪了完整的解决方案,但我进行了更改:

app.use(express.static(''client/build''));app.get("*", (req, res) => {    res.sendFile(require(''path'')        .resolve(__dirname, ''client'', ''build'', ''index.html''));})

至:

const root = require(''path'').join(__dirname, ''client'', ''build'')app.use(express.static(root));app.get("*", (req, res) => {    res.sendFile(''index.html'', { root });})

我对第一个程序段不起作用肯定感到有些奇怪。我认为这与我的React项目中的相对链接有关,因为index.html尽管出现了错误,但确实将文件传递给了浏览器。也许一个完全静态的文件可以与第一个块一起使用,但是我想知道那是否正确。

ES6模块导入,给出“未捕获的SyntaxError:意外的标识符”

ES6模块导入,给出“未捕获的SyntaxError:意外的标识符”

对于个人项目,我正在尝试使用ES6
import编写更简洁的代码。作为第一个测试,我正在编写一个应生成菜单的对象。当我直接加载类时,整个代码都在工作,但是在ES6中使用导入和导出时,它在以下import行中给出了“未捕获的SyntaxError:意外的标识符”错误main.js

我有以下文件:

资产/js/menu.module.js

''use strict'';export default class Menu{ ... }

资产/js/main.js

import Menu from "./menu.module.js";window.addEventListener(''DOMContentLoaded'', () => {    const menu = new Menu();});

index.html

<script type="module" src="assets/js/menu.module.js"></script><script src="assets/js/main.js">

请注意,这些只是相关的代码行。

是否使用<scripttype="module">线路似乎对我没有任何影响。我确实同时启用了实验性和ES6模块的chrome标志,因为没有它们,我会收到关于import未定义的错误。

Chrome版本为62,因此根据不同的来源(包括Google的更新日志本身),即使没有这些标志,它也应该可以正常工作。

有人能启发我为什么这不起作用以及我在做什么错吗?

答案1

小编典典

正如@Bergi在评论中提到的,在HTML中添加type="module"main.js导入行解决了该问题。现在一切正常。即

<script type="module" src="assets/js/main.js">

感谢所有响应并尝试提供帮助的人。

Javascript / jQuery |未捕获的SyntaxError:意外的输入结束?

Javascript / jQuery |未捕获的SyntaxError:意外的输入结束?

jQuery noob在这里检查.我的语法有什么问题?我在Chrome控制台中收到了意外的输入结束.

<script>
$('a[href*=#]:not([href=#])').click(function() {
  if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') 
     || location.hostname == this.hostname) {

     var target = $(this.hash);
     target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
        if (target.length) {
          $('html,body').animate({
              scrollTop: target.offset().top
         },1000);
         return false;
        }
     }
 });
</script>

解决方法

这意味着您忘记了关闭},),>或其语法中使用的任何内容.检查所有块和语句,看看是否遗漏了任何结束标记.

如果您将代码复制到jsbeautifier.org,请单击“Beautify”并查看是否所有缩进都正确.

关于未捕获的SyntaxError:在严格模式代码中,只能在顶级或立即在另一个函数内声明函数的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Chrome:未捕获的 SyntaxError:输入意外结束、Create-React-App构建-“未捕获的SyntaxError:意外令牌<”、ES6模块导入,给出“未捕获的SyntaxError:意外的标识符”、Javascript / jQuery |未捕获的SyntaxError:意外的输入结束?等相关内容,可以在本站寻找。

本文标签: