如何修复与Webpack相关的错误:无法分配给只读属性&#39; exports&#39;对象&#39;#<object>&#39;?

时间:2017-12-08 18:39:05

标签: node.js webpack

我正在使用webpack,如果我理解正确,它不支持原生网络工作者语法,所以我尝试使用worker-loader npm模块,但我&#39 ;得到一个奇怪的错误。

可以找到该模块here

我的webpack配置:

module.exports = {
    entry: "./app",
    output: {
        path: __dirname + "/build",
        filename: "bundle.js"
    },
    watch: true,
    module: {
        rules: [{
            test: /\.worker\.js$/,
            use: {
                loader: 'worker-loader'
            }
        }]
    }
}

我的代码触发错误:

import Worker from '../workers/sim.js';

class Synapse {
  // ...
}

module.exports = Synapse;

错误:

Cannot assign to read only property 'exports' of object '#<Object>'?

指向module.exports = Synapse

2 个答案:

答案 0 :(得分:3)

将CommonJS module.exports与ES模块混合时会出现此错误。您必须将module.exports更改为其ES模块对应export default

import Worker from '../workers/sim.js';

class Synapse {
  // ...
}

export default Synapse; // ES Module syntax

答案 1 :(得分:0)

您正在同一文件中进行导入和导出,这是 webpack 不允许的 最好这样做

const {Worker} = require('../workers/sim.js');

class Synapse {
  // ...
}

module.exports = {Synapse};