Estoy desarrollando un sitio web con webpack. Cuando tengo un código como este:
import $ from 'jquery'; function foo() {}; module.exports = foo; Recibí el error Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>' .
Resulta que cambiar import $ from 'jquery' a var $ = require('jquery') no causa ningún error.
¿Por qué importar con module.exports causa este error? ¿Hay algo malo en usar require en su lugar?
No puede mezclar import y module.exports . En el mundo de las import , necesitas exportar cosas.
// Change this module.exports = foo; // To this export default foo;Esto sucede si otros módulos posteriores tienen un árbol de requisitos inesperado. Los cambios de Babel requieren importar donde no se supone que debe hacerlo, lo que causa el problema antes mencionado @Matthew Herbst. Para resolver esto, agregue "sourceType": "unambiguous" a su archivo babelrc o babel.config.js para que @babel/plugin-transform-runtime no haga este cambio de expresión requerida para importar en sus archivos commonjs. p.ej:
module.exports = { presets: [ '@quasar/babel-preset-app' ], "sourceType": "unambiguous" }Puede usar require con export. Pero no import y module.exports.