我想使用第三方插件但是无法通过我的webpack配置加载它,因为vue-loader没有正确配置(我认为) 导入项目文件夹中的我自己的组件。
(function (exports, require, module, __filename, __dirname) { <template>
SyntaxError: Unexpected token <
尝试从包中导入.vue文件时出现此错误:
const path = require('path')
const webpack = require('webpack')
const vueConfig = require('./vue-loader.config')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
const nodeExternals = require('webpack-node-externals')
const isProd = process.env.NODE_ENV === 'production'
module.exports = {
devtool: isProd
? false
: '#cheap-module-source-map',
output: {
path: path.resolve(__dirname, '../dist'),
publicPath: '/dist/',
filename: '[name].[chunkhash].js'
},
resolve: {
alias: {
'public': path.resolve(__dirname, '../public')
}
},
module: {
noParse: /es6-promise\.js$/, // avoid webpack shimming process
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules\/,
query: {
plugins: ['transform-runtime']
}
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'url-loader',
options: {
limit: 10000,
name: '[name].[ext]?[hash]'
}
},
{
test: /\.css$/,
use: isProd
? ExtractTextPlugin.extract({
use: 'css-loader?minimize',
fallback: 'vue-style-loader'
})
: ['vue-style-loader', 'css-loader']
}
]
},
performance: {
maxEntrypointSize: 300000,
hints: isProd ? 'warning' : false
},
plugins: isProd
? [
new webpack.optimize.UglifyJsPlugin({
compress: { warnings: false }
}),
new webpack.optimize.ModuleConcatenationPlugin(),
new ExtractTextPlugin({
filename: 'common.[chunkhash].css'
})
]
: [
new FriendlyErrorsPlugin()
]
}
所以我认为如果导入node_modules文件夹中的包,vue-loader就不起作用了。
这是我的webpack配置:
module.exports = {
extractCSS: process.env.NODE_ENV === 'production',
preserveWhitespace: false,
postcss: [
require('autoprefixer')({
browsers: ['last 3 versions']
})
]
}
VUE-loader.config.js
root@linuxkit-025000000001:/# /my/dir/path/confluent-4.0.0/bin/confluent start
node_modules被排除但不应该只为babel-loader而不是vue加载器本身排除?
----编辑
我使用SSR,作者本身在此issue
中说明@johnRivs非常感谢你。 @sbefort您可以导入库 从&#39; vuejs-paginate / src / components / Paginate&#39;中导入Paginate;对于 SSR。如有任何问题,请重新开启此问题。
答案 0 :(得分:1)
您不想进入NPM包内部。
当你这样做时:
$('#example').DataTable( {
initComplete: function () {
this.api().columns().every( function () {
var column = this;
var select = $('<select><option value=""></option></select>')
.appendTo( $(column.header()).empty() )
.on( 'change', function () {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
column
.search( val ? '^'+val+'$' : '', true, false )
.draw();
} );
column.data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' )
} );
} );
}
}
请注意,您依赖于import Paginate from 'vuejs-paginate/src/components/Paginate.vue'
的内部(vuejs-paginate
文件夹存在?)等等。
属性方法是安装包并导入包暴露的内容。
例如,要安装,请在shell上运行:
src
然后在您的代码中,导入并使用如下:
npm install vuejs-paginate --save
WebPack将从import Paginate from 'vuejs-paginate'
Vue.component('paginate', Paginate)
独立地(至少关于vuejs-paginat
本身)处理其余的事情。是的,vue-loader
应排除vue-loader
,因为您不希望它处理您导入的每个包的每个原始node_modules
文件。