Последующие объявления свойств должны иметь одинаковый тип - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть два webpack файла конфигурации

webpack1.config.js

const ExtractTextPlugin = require('extract-text-webpack-plugin');
const path = require('path');

const config = {
    entry: [
        './app/App1/App1.ts'
    ],

    output: {
        path: path.resolve('', 'web/assets/js'),
        filename: 'app1.js'
    },

    resolve: {
        extensions: [".ts", ".tsx", ".vue", ".js"],
        modules: [
            path.resolve('./app'),
            path.resolve('./node_modules')
        ],
        alias: {
            'vue$': 'vue/dist/vue.esm.js'
        },
    },

    module: {
        rules: [
            {
                test: /\.ts?$/,
                loader: 'ts-loader',
                exclude: /node_modules/,
                options: {
                    appendTsSuffixTo: [/\.vue$/]
                }
            },
            {
                test: /\.vue?$/,
                loader: 'vue-loader',
                exclude: /node_modules/,
                options: {
                    esModule: true
                }
            }
        ]
    },
};

module.exports = config;

webpack2.config.js

const path = require('path');

const config = {
    entry: [
        './app/App2/App2.ts'
    ],

    output: {
        path: path.resolve('', 'web/assets/js'),
        filename: 'app2.js'
    },

    resolve: {
        extensions: [".ts", ".tsx", ".vue", ".js"],
        modules: [
            path.resolve('./app'),
            path.resolve('./node_modules')
        ],
        alias: {
            'vue$': 'vue/dist/vue.esm.js'
        },
    },

    module: {
        rules: [
            {
                test: /\.ts?$/,
                loader: 'ts-loader',
                exclude: /node_modules/,
                options: {
                    appendTsSuffixTo: [/\.vue$/]
                }
            },
            {
                test: /\.vue?$/,
                loader: 'vue-loader',
                exclude: /node_modules/,
                options: {
                    esModule: true
                }
            }
        ]
    },
};

module.exports = config;

Теперь, когда я компилирую app1, используя webpack1.config.js, он выдает ошибку Последующие объявления свойств должны иметь тот же тип. Свойство 'user' должно иметь тип 'IUser', но здесь имеет тип 'IUser'.

Потому что в App1.ts у меня есть следующая строка

   import IUser from 'IUser'; // /app/App1/IUser.ts
   ...
   user:IUser;
   ...

А App2.ts имеет

   import IUser from 'IUser'; // /app/App2/IUser.ts
   ...
   user:IUser;
   ...

Проблема в том, что местоположение app/App2 также содержит IUser интерфейс, но как я могу сказать от webpack1.config.js до stop , глядя на app/App2 местоположения?

Я уже пробовал что-то вроде

``

           test: /\.ts?$/,
            loader: 'ts-loader',
            exclude: [/node_modules/, /app\/App2/], // so maybe try to omit App2?
            options: {
                appendTsSuffixTo: [/\.vue$/]
            }

Поэтому я попытался исключить app/App2, но это не помогло, и я все еще вижу эту ошибку. У меня последняя версия TypeScript и забавная, потому что она все время работала нормально, и вдруг эта ошибка появилась сегодня (я ничего не обновлял, просто пытался скомпилировать проект, как обычно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...