之前运行得好好的项目,在删除node_modules目录后,重新npm i,突然启动不起来了,提示Can't import the named export 'SetArray' from non EcmaScript module。

经过了解和排查,发现可能是因为某个依赖项升级后导致与其他依赖版本不匹配,解决方案如下:

在webpack.config.js里添加一段代码:

module: {
   rules: [
      {
        include: /node_modules/,
        test: /\.mjs$/,
        type: 'javascript/auto'
      }
   ]
}    

然后正常npm start启动了。

感觉应该是某个依赖项升级后多了个mjs类型的文件,然后webpack没有相应的构建打包规则,需要配置转化一下。

知识点总结:

(1)关于webpack,javascript/auto去官网了解了一下,给的定义是这样的:

 意思就是采用自己定义的加载器进行解析,而不是用webpack默认的。

(2)通过这次问题,感觉还是需要一个package-lock.json或者npm-shrinkwrap.json用来限制版本,否则很容易出现npm/cnpm下载的时候某个依赖项自动更新版本导致版本不匹配。这边提供生成npm-shrinkwrap.json方式:

npm shrinkwrap

【注意】如果package-lock.json或者npm-shrinkwrap.json同时存在,那么优先更新匹配npm-shrinkwrap.json。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐