У меня есть проект со следующей структурой:
root
| package.json
|
|___server
| server.ts
| tsconfig.json
|
|___client
| babel.config.json
| vue.config.js
| tsconfig.json
|
|___src
main.ts
У меня есть один пакет. json в root моего проекта, который выполняет сборку клиента и сервера / test / lint / обслуживать. Кажется, сервер работает правильно, но когда я запускаю сборку / обслуживание для клиентской стороны с помощью vue -cli-service, я получаю следующую ошибку:
Этот относительный модуль не найден :
* ./src/main.js в мульти ./src/main.js
Я испробовал несколько исправлений:
- Переместить код сервера из папки sr c в папку сервера
- Переместить vue .config. json на root уровень и использовать forktscheckerwebpackplugin, чтобы указать tsconfig
- Укажите точку входа с помощью команды vue -cli-service build [entry]
До сих пор мне не удалось решить эту проблему. Что мне нужно сделать, чтобы устранить эту ошибку?
Пакет. json
{
"main": "dist/server/server.js",
"types": "dist/server/index.d.ts",
"scripts": {
"build": "rimraf dist && tsc --p server/tsconfig.json && cd client && vue-cli-service build",
"build-client": "rimraf dist/client && cd client && vue-cli-service build",
"build-server": "rimraf dist/server && tsc --p server/tsconfig.json",
"serve:local": "concurrently \"npm run serve-server:local\" \"npm run serve-client:local\"",
"serve-server:local": "npm run build-server && env NODE_ENV=local node dist/server/server.js",
"serve-client:local": "cd client && vue-cli-service serve --mode local"
}
}
vue .config. js
module.exports = {
transpileDependencies: ['vuetify'],
devServer: {
proxy: 'http://localhost:3000',
},
configureWebpack: {
devtool: 'source-map',
}
};
Клиент tsconfig. json
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"strict": true,
"jsx": "preserve",
"importHelpers": true,
"moduleResolution": "node",
"experimentalDecorators": true,
"allowJs": true,
"outDir": "../dist/client",
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"baseUrl": ".",
"types": [
"webpack-env",
"vuetify",
"jest"
],
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
},
"include": [
"src/**/*.ts",
"src/**/*.tsx",
"src/**/*.vue",
"tests/**/*.ts",
"tests/**/*.tsx"
],
"exclude": [
"node_modules"
]
}
main.ts
import Vue, { VNode } from 'vue';
import App from './App.vue';
import vuetify from './plugins/vuetify';
import router from './router';
import store from './store';
Vue.config.productionTip = false;
new Vue({
vuetify,
router,
store,
render: (h): VNode => h(App),
}).$mount('#app');