我有错误:"未捕获的TypeError:无法分配给只读属性' exports'对象'#'"。在build.js中,这个错误在行" module.exports = main;"中。哪里出错了?我的模块:
这是我的主要文件script.js
const showContent = require('./modules/showContent');
const main = require('./modules/screens/main');
const about = require('./modules/screens/about');
const blog = require('./modules/screens/blog');
const contacts = require('./modules/screens/contacts');
const gallery = require('./modules/screens/gallery');
$(document).ready(function() {
console.log(main);
showContent(main);
$(document).on("click", "a", (e) => {
if ( $(this).hasClass('active') ) return;
$("a").removeClass('active');
$(this).addClass('active');
$(".slide").slideUp(800);
const self = this;
setTimeout(() => showContent($(self).attr('id')), 800);
});
});
main.js
const getElementFromTemplate = require('../getElementFromTemplate');
const showContent = require('../showContent');
const main = getElementFromTemplate(`<div>
<h2>Добро пожаловать на Фиджи</h2>
<img src="images/img03.jpg" alt="img03">
<p><b>Фиджи</b> - название государства и архипелага из 332 островов, на которых это государство находится: на юго-западе Тихого океана, среди других островов и архипелагов Меланезии - правда, расстояние между этими частицами суши составляет сотни и тысячи километров. Острова архипелага Фиджи коралловые и вулканические; примерно 1/3 их нежилые, однако это и привлекает внимание желающих уединиться по разным причинам - влюбленных пар, молодоженов, романтиков и просто любителей нетронутой природы.</p>
</div>
<div>
<h2>Климат Фиджи: мягкие тропики</h2>
<img src="images/img04.jpg" alt="img04">
<p>Климат влажный тропический, но сильной жары нет ни летом, в сезон дождей - около 26 ° C, ни в сухой сезон - около 23 ° C: здесь комфортно чувствуют себя и взрослые, и дети. Правда, бывают и более высокие температуры - 28-34 ° C, но в ночи всегда становится прохладнее.</p>
<p>Для отдыха обычно рекомендуется выбирать период с мая по декабрь, когда дождей почти нет. Погода отличается в разных частях архипелага: так, на южных берегах основных островов дожди идут чаще и больше высокая влажность воздуха.</p>
</div>
<div>
<h2>Пляжи на Фиджи</h2>
<img src="images/img05.jpg" alt="img05">
<p>Больше всего туристов «привлекается» на остров Вити-Леву, крупнейший в архипелаге Фиджи. Здесь любой может найти себе место по душе и по карману: есть и первоклассные отели и недорогие гостиницы. Пляжи тянутся более чем на 100 км - их называют Коралловым берегом; территория острова - более 10 000 км, и на побережье расположено множество различных курортов, от фешенебельных до тихих и незаметных. Для семейного отдыха хороший пляж Paradise, тихий и спокойный, с мелким белым песком и почти не затронутым «окультуриванием»: пальмы рядом растут прямо у берега и скрыться от жаркого солнца - не проблема, что особенно актуально для семей с детьми. Однако, об удобных головные уборы, солнечные очки и солнцезащитные средства следует позаботиться вовремя: загар на Фиджи очень красивый, но получить солнечные ожоги, в том числе и находясь в воде, можно «в два счета». Взрослые могут найти себе здесь массу развлечений, от дайвинга до рыбалки с арендой катера.</p>
</div>
<div>
<h2>Экскурсии и памятные места на Фиджи</h2>
<img src="images/img06.jpg" alt="img06">
<p>Кажется, что памятников на Фиджи не может быть много, но их, исторических и природных, наберется немало. Сигатока - песчаные дюны, является уникальным местом: на Фиджи везде зелень, а здесь - волнообразные холмы из песка до 60 м высотой - считается, что они формировались миллионы лет. История местности не менее интересна, чем пейзаж: здесь создан археологический парк и открыт музей. Археологи находят вещи, которым около 3000 лет, а здешние захоронения еще старше.</p>
<p>На Фиджи очень много национальных парков и заповедников, за охраной которых постоянно следят местные власти: ведь нетронутая природа - главное богатство этой небольшой и гостеприимной страны с приветливыми и веселыми жителями.</p>
</div>`);
module.exports = main;
showContent.js
const showContent = (contentTemplate) => {
const content = document.querySelector(`main`);
content.innerHTML = ``;
content.appendChild(contentTemplate);
};
module.exports = showContent;
webpack.config.js
module.exports = {
entry: "./script",
output: {
filename: "build.js"
}
};
答案 0 :(得分:3)
more info - webpack/issues/4039
在.babelrc中设置在指示Babel不转换模块语法之后,这个问题对我产生了新的影响。它只在尝试在ES模块中使用CommonJS样式module.exports时发生。这可以通过简单地替换所有module.exports = ...来导出默认值来修复......在适用的情况下,因为这似乎等同于旧的Babel风格的ES模块转换。 (请注意,使用require导入此模块可能会为您提供一个默认键而不是默认导出本身的选项,因此最好立即切换整个代码库。)
删除.babelrc中的“modules:false”
“amd”| “umd”| “systemjs”| “commonjs”| false,默认为“commonjs” 启用将ES6模块语法转换为其他模块类型 将此设置为false将不会转换模块。