Я пытаюсь создать библиотеку vue, опубликованную в npm. Библиотека снабжена расширением файла ". vue", а не общим js.)
При сборке библиотеки с помощью веб-пакета возникает ошибка, подобная следующей.
(function (exports, require, module, __filename, __dirname) { <template>
^
SyntaxError: Unexpected token <
at new Script (vm.js:79:7)
at createScript (vm.js:251:10)
at Object.runInThisContext (vm.js:303:10)
at Module._compile (internal/modules/cjs/loader.js:657:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:20:18)
пакет. json
"author": "",
"license": "ISC",
"devDependencies": {
"vue-class-component": "^7.2.3",
"vue-loader": "^15.9.1",
"vue-property-decorator": "^8.4.1",
"webpack": "^4.42.1",
"webpack-cli": "^3.3.11",
"webpack-node-externals": "^1.7.2"
},
"dependencies": {
"vue-components": "^1.0",
"vue": "^2.6.11",
"vue-server-renderer": "^2.6.11"
}
webpack.config. js
const path = require('path');
const nodeExternals = require('webpack-node-externals');
const {TsConfigPathsPlugin} = require('awesome-typescript-loader');
module.exports = {
mode: 'development',
entry: './src/server.js',
target: 'node',
externals: [nodeExternals()],
node: {
__filename: true,
__dirname: true
},
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: {}
},
]
},
plugins: [
],
resolve: {
extensions: ['.js', '.vue', '.json']
},
output: {
filename: 'server.js',
path: path.resolve(__dirname, './dist'),
libraryTarget: 'commonjs2'
}
}
сервер. js
import {createRenderer} from 'vue-server-renderer';
import Vue from 'vue';
import Button from 'vue-components/Button.vue';
function sample() {
const app = new Vue({
template: `<div><Button/></div>`,
components: {
Button
}
});
createRenderer().renderToString(app, (err, html) => {
console.log(html);
});
}
sample();
Я думаю Вероятно, это связано с тем, что в файле node_modules есть файл vue, но я не уверен. Как я могу решить эту проблему?