У меня есть приложение Vue-CLI, которое до недавнего времени работало нормально.Теперь иногда это сообщение появляется в консоли, а остальная часть приложения не загружается:
TypeError: "exports" is read-only
Непосредственной причиной является один из моих модулей, который использует module.exports
для экспорта своей функции по умолчанию., Я понимаю, что Webpack (который использует Vue CLI) уменьшил поддержку module.exports
, по крайней мере, в случае модуля, который также содержит операторы ES2015 import
.Но это здесь не так .А Webpack иногда просто компилирует его.
Что особенно странно, так это его прерывистость.Как правило, я могу временно устранить проблему с помощью rm -rf node_modules; npm install
.(Установка пряжи не кажется надежной).Но потом это возвращается.
В чем может быть причина?Возможно, две конкурирующие зависимости?Мой package.json выглядит следующим образом:
"dependencies": {
"@turf/turf": "^5.1.6",
"bluebird": "^3.5.3",
"color": "^3.1.0",
"mapbox-gl": "^0.50.0",
"mapbox-gl-utils": "^0.4.0",
"thenify": "^3.3.0",
"vue": "^2.5.17",
"vue-carousel": "^0.16.0-rc2"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^3.0.5",
"@vue/cli-plugin-eslint": "^3.2.1",
"@vue/cli-service": "^3.0.5",
"babel-eslint": "^10.0.1",
"babel-loader": "^8.0.4",
"copy-webpack-plugin": "^4.6.0",
"eslint": "^5.9.0",
"eslint-plugin-vue": "^5.0.0",
"less": "^3.9.0",
"less-loader": "^4.1.0",
"pug": "^2.0.3",
"pug-plain-loader": "^1.0.0",
"vue-template-compiler": "^2.5.17"
},
"postcss": {
"plugins": {
"autoprefixer": {}
}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}
, а мой vue.config.js (упрощенно):
const CopyWebpackPlugin = require('copy-webpack-plugin')
const path = require('path');
module.exports = {
chainWebpack: config => {
config.module
.rule('eslint')
.use('eslint-loader')
.tap(options => {
options.configFile = path.resolve(__dirname, ".eslintrc.js");
return options;
})
},
configureWebpack: {
plugins: [
new CopyWebpackPlugin([
{ ... }
]
}
}
Я подозреваю, не будучи уверенным, что проблема вызванакогда я делаю обновления в своем модуле, который связан с помощью npm link
.
Использование Vue CLI версии 2.1.1.
В качестве обходного пути, если я вместо этого использую инструкцию ES2015 export
Да, приложение работает, но тогда я не могу запустить свой набор тестов с NodeJS.
Я хотел бы получить любые предложения о том, как сделать мою среду более стабильной, чтобы эта периодически возникающая проблема не повторялась.