web-dev-qa-db-fra.com

webpack: erreur d'importation + module.exports dans le même module

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?

31
juniorgarcia

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;
54
Matthew Herbst

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"
}
5
Emmanuel Mahuni