vue -cli-service build не может найти основной. js - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть проект со следующей структурой:

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');
...