Webpackを使用してWebサイトを開発しています。このようなコードがある場合:
_import $ from 'jquery';
function foo() {};
module.exports = foo;
_
エラー_Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>'
_が発生しました。
_import $ from 'jquery'
_をvar $ = require('jquery')
に変更してもエラーは発生しません。
module.exportsでインポートするとこのエラーが発生するのはなぜですか?requireを代わりに使用することで何か問題がありますか?
import
とmodule.exports
を混在させることはできません。 import
の世界では、物をエクスポートする必要があります。
// Change this
module.exports = foo;
// To this
export default foo;
これは、ダウンストリームの他のモジュールに予期しないツリーが必要な場合に発生します。 Babelの変更では、@ Matthew Herbstの前述の問題の原因となるはずのない場所にインポートする必要があります。これを解決するには、"sourceType": "unambiguous"
をbabelrc
ファイルまたはbabel.config.jsに追加し、@ babel/plugin-transform-runtimeがcommonjsファイルにインポートするためのrequire式のこの変更を行わないようにします。例えば:
module.exports = {
presets: [
'@quasar/babel-preset-app'
],
"sourceType": "unambiguous"
}