Je développe un site web avec webpack. Quand j'ai un code comme celui-ci:
import $ from 'jquery';
function foo() {};
module.exports = foo;
J'ai l'erreur Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>'
.
Il s'avère que changer de import $ from 'jquery'
En var $ = require('jquery')
ne provoque aucune erreur.
Pourquoi l'importation avec module.exports provoque-t-elle cette erreur? Y a-t-il un problème en utilisant require?
Vous ne pouvez pas mélanger import
et module.exports
. Dans le monde import
, vous devez exporter des éléments.
// Change this
module.exports = foo;
// To this
export default foo;
Cela se produit si d'autres modules en aval ont une arborescence de besoins inattendue. Les modifications de Babel doivent être importées là où elles ne sont pas supposées causer le problème susmentionné @Matthew Herbst. Pour résoudre ceci, ajoutez "sourceType": "unambiguous"
dans votre fichier babelrc
ou dans babel.config.js afin que @ babel/plugin-transform-runtime ne modifie pas l'expression requise à importer dans vos fichiers commonjs. par exemple:
module.exports = {
presets: [
'@quasar/babel-preset-app'
],
"sourceType": "unambiguous"
}