vue cli - 未捕获的SyntaxError:意外的令牌

问题描述 投票:3回答:5

我用vue-cli 3.0创建我的项目。最初运行正常。但在我<ctrl>-c然后nom run serve再次,它继续投掷错误:

未捕获的SyntaxError:意外的令牌<

它表明错误发生在app.js的第一行,但我在控制台检查<实际上是来自index.html。这意味着在这个过程的某个地方,webpack认为index.html应该像app.js一样。

以下是我使用的包:

vue 3.0.0-rc.3 @ vue / cli-plugin-babel ^ 3.0.0-beta.15 @ vue / cli-plugin-eslint ^ 3.0.0-beta.15 @ vue / cli-service ^ 3.0.0 -beta.15

我该如何解决这个问题?

Update01我再次删除整个node-modules文件夹和npm install,然后一切似乎再次正常工作。但如果有人知道为什么会这样,请分享。

javascript vue.js vuejs2
5个回答
4
投票

我有同样的问题,我尝试删除节点模块和再次安装npm,但这不起作用。

删除所有网站数据的工作是什么。您可以通过打开开发选项卡(Ctrl + Shift + i)来执行此操作(在Chrome中),转到“应用程序”选项卡并单击清除站点数据。

我的猜测是我仍然有一些旧的服务工作者拦截了请求并提供了html文件而不是app.js.因此,如果你之前在网址“http://localhost:8080”使用过PWA,这可能会解决问题。


4
投票

尝试将<base href="/" />添加到index.html的<head>中。希望它会奏效。


3
投票

卸载CLI并在Chrome中重新安装V3 + A“硬”刷新就可以了。也许仅靠硬刷就足够了(CTRL + F5)


1
投票

我假设您使用的是与vue uivue create相同的控制台窗口来启动项目?

然后尝试打开一个新的控制台实例并在其中运行您的项目。

在我的情况下,它工作,问题是第一个控制台中的覆盖环境变量。

祝你好运!


1
投票

当我尝试运行vue ui时出现此错误。这发生在我安装vue cli 2.0和3.0时。

所以我卸载了两个并安装了3.0然后:

我所要做的只是一个空的缓存和硬盘重新加载。

按f12打开开发人员工具,然后单击并按住刷新按钮,然后选择空现金和硬重新加载。

我不确定这是否与您的具体问题有关。


0
投票

我也有同样的问题。在index.html文件中,我只写这个脚本标记,如下所示:

  <script src="./static/js/qrcode.min.js"></script>

如果我像这样更改src attr:

 <script src="/static/js/qrcode.min.js"></script>

好的,没有错误'意外的令牌<'显示。

这是另一个发生的问题,这对我来说很难过。

显示的在线构建产品测试我无法访问此站点并获取资源。我的天啊 !好的,我再次改变这个src:

<script src="./static/js/qrcode.min.js"></script>

然后在vue.config.js中进行一些更改,如下所示:

baseUrl:'./'
assetsDir:'./'

所以,在线一切都很好,但在我的本地项目运行中,它将收到此错误。

最后,我发现了这个:

在线网址:http://xxxxx.cn/test0001/#/

当地网址:http://192.168.5.108:9000/test0001/#/

(ps:test0001 params无法删除,我的项目需要它)

如果我删除此参数'test0001',则此错误不会显示在我的本地项目测试中。

我猜构建和开发环境的区别导致了这个错误,而我的params test0001在url地址中。

最后,我只是用一个参数来区分这个产品和开发来解决它。

如果有人遇到像我这样的问题,请分享您的解决方案。


0
投票

它表示错误发生在app.js的第一行,但我在控制台中检查<实际上是来自index.html。这意味着在整个过程中,webpack认为index.html应该像app.js一样进行转换。

在我的情况下恰恰相反:我添加了一个url重写问题。一个广泛的规则使我的js和css资产被重定向到index.html,这就是为什么我在我的js或css文件的开头添加<。

所以,如果你的情况也是如此,问题出现在你的后端(Java Spring和javax.Filter for urlrewrite for me)。所以,如果它可以帮助某人,这里是urlrewrite.xml的正确部分:

<rule match-type="wildcard">
  <from>/assets/**</from>
  <to last="true">-</to>
 </rule>

 <rule match-type="wildcard">
   <from>/index.html</from>
     <to last="true">-</to>
 </rule>

 <rule match-type="wildcard">
   <from>/**</from>
     <to>/index.html</to>
 </rule>

0
投票

当我尝试将javascript文件链接到index.html时,我遇到了同样的错误。

配置:Django(后端) - Vue(前端) - Daphne - Nginx。

Django urls.py通过定义的视图将每个连接(除了先前定义的那些,例如API之外)路由到'vuejs / index.html'。 javascript文件需要通过{% include "path" %}合并,并通过Django呈现。双花括号{{}}对Django意味着什么,这就是为什么分隔符需要在Javscript文件中更改为['[[', ']]']的原因(参见main.js)。

vuejs / index.html的:

<html>
<head>
<meta charset="utf-8">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
<div id="vue-app">
[[name]]
</div>
<script>
{% include "vuejs/src/main.js" %}
</script>
</body>
</html>

vuejs / src目录/ main.js:

new Vue({
delimiters: ['[[', ']]'],
el: '#vue-app',
data: {
name: 'Vodka Gorbatschow',
}
});

0
投票

您可能在index.html的src属性中使用了“./”前缀作为相对路径,只需将其替换为“<%= BASE_URL%>”,它就可以正常工作。

//<script src="./js/config.js">
<script src="<%= BASE_URL %>js/config.js">

这种“./”用法不会导致正常Vue路由出现任何问题,但是当您实现动态路由匹配({path:'/ user /:id',component:User})时,您的index.html中的引用“ ./“前缀不会按预期工作! 这是因为Vue文件结构会将您的依赖项放在路径文件夹中

user/js/config.js

这个结构是相同的,即使你的路线有路线参数(http://yourdomain.com/user/1234),因为你实现了动态路线匹配并使用相同的Vue组件(User.vue)。 此时,“。/”可能指向user / 1234 / js / config.js,因此最终会转到默认的404页面,这是一个以“<html>”开头的HTML文件,因此您将获得“Uncaught” SyntaxError:引用文件的第1行中的意外标记<“。

© www.soinside.com 2019 - 2024. All rights reserved.