"Unexpected token <" 用于 VueJS 运行 Webpack
"Unexpected token <" for VueJS running with Webpack
注意:在您将此标记为重复之前,我已经查看了一些解决方案但它们不起作用:
- [1] https://github.com/webpack/webpack-dev-server/issues/135
这里很少有其他 Unexpected token <
主题,但它们(可能)无关。
我正在尝试将 VueJS 集成到 OSS 聊天应用程序中 https://github.com/zulip/zulip。我尝试使用来自 vue-loader 的标准配置模板,其中包括单文件组件和热重载,但是当我尝试 运行 服务器时,出现此错误:
...
ERROR in ./static/js/components/sidebar.vue
Module parse failed: /srv/zulip/static/js/components/sidebar.vue Line 1: Unexpected token <
You may need an appropriate loader to handle this file type.
| <template>
| <div>
| {{ msg }}
@ ./static/js/src/main.js 3:14-50
...
这是 webpack 配置:
var webpack = require('webpack')
module.exports = {
entry: [
'webpack-dev-server/client?http://0.0.0.0:9991/socket.io',
'./static/js/src/main.js',
],
devtool: 'eval',
output: {
publicPath: 'http://0.0.0.0:9991/webpack/',
path: './static/js',
filename: 'bundle.js',
},
devServer: {
port: 9994,
stats: "errors-only",
watchOptions: {
aggregateTimeout: 300,
poll: 1000,
},
},
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'file-loader',
options: {
name: '[name].[ext]?[hash]'
}
}
]
}
};
信息:
第一个 link 建议添加显式 public 路径,但我之前已经这样做了。
代码中有几个服务器 运行ning,包括用于主应用程序服务器的 django 和用于推送事件的 tornado。
该应用程序仅在开发主机(vagrant)之外公开端口 9991。 webpack-dev-server 使用 9994 但被重定向到 localhost:9991/webpack/
您可以在此处查看更改:https://github.com/tommyip/zulip/commit/97cf122bda0f7dc09f6c8c3062c55871c315459e
我漏掉了一个关键信息,就是Webpack的版本
Vue 和 vue-loader 网站中显示的示例使用 Webpack 2 API,与 Webpack 1 略有不同:
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader'
},
Rules
在 Webpack 1 中实际上是 loaders
。
注意:在您将此标记为重复之前,我已经查看了一些解决方案但它们不起作用:
- [1] https://github.com/webpack/webpack-dev-server/issues/135
这里很少有其他
Unexpected token <
主题,但它们(可能)无关。
我正在尝试将 VueJS 集成到 OSS 聊天应用程序中 https://github.com/zulip/zulip。我尝试使用来自 vue-loader 的标准配置模板,其中包括单文件组件和热重载,但是当我尝试 运行 服务器时,出现此错误:
...
ERROR in ./static/js/components/sidebar.vue
Module parse failed: /srv/zulip/static/js/components/sidebar.vue Line 1: Unexpected token <
You may need an appropriate loader to handle this file type.
| <template>
| <div>
| {{ msg }}
@ ./static/js/src/main.js 3:14-50
...
这是 webpack 配置:
var webpack = require('webpack')
module.exports = {
entry: [
'webpack-dev-server/client?http://0.0.0.0:9991/socket.io',
'./static/js/src/main.js',
],
devtool: 'eval',
output: {
publicPath: 'http://0.0.0.0:9991/webpack/',
path: './static/js',
filename: 'bundle.js',
},
devServer: {
port: 9994,
stats: "errors-only",
watchOptions: {
aggregateTimeout: 300,
poll: 1000,
},
},
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'file-loader',
options: {
name: '[name].[ext]?[hash]'
}
}
]
}
};
信息:
第一个 link 建议添加显式 public 路径,但我之前已经这样做了。
代码中有几个服务器 运行ning,包括用于主应用程序服务器的 django 和用于推送事件的 tornado。
该应用程序仅在开发主机(vagrant)之外公开端口 9991。 webpack-dev-server 使用 9994 但被重定向到 localhost:9991/webpack/
您可以在此处查看更改:https://github.com/tommyip/zulip/commit/97cf122bda0f7dc09f6c8c3062c55871c315459e
我漏掉了一个关键信息,就是Webpack的版本
Vue 和 vue-loader 网站中显示的示例使用 Webpack 2 API,与 Webpack 1 略有不同:
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader'
},
Rules
在 Webpack 1 中实际上是 loaders
。