Module not found: Error: Can't resolve 'xlsx' in 'd:\crx\crx-bus\src'

有个 ts 项目编译时报错:

Module not found: Error: Can't resolve 'xlsx' in 'd:\crx\crx-bus\src'

项目环境:

- webpack v4.x

- ts-loader v5.x

- xlsx v0.15.4

分析

从报错字面理解,像是 xlsx 这个第三方 package 在查找时,从 src 目录找不到。可这个包应该从 node_modules 里找才对。

调试

在 npm 的 scripts 里 webpack 命令后添加参数:

webpack  --display-error-details

观察更细节的错误显示。

发现端倪:

从更丰富的报错信息中可以看到,查找模块的过程在 node_modules/xlsx 里遍历各种扩展名,以试图寻找 xlsx ,但都未找到。

下手:

于是我打开 node_modules/xlsx,发现其 package.json 中的 main 属性值为 ./xlsx,并未带扩展名,而目录里提供的 xlsx.js ,扩展名为 js。

解药:

我检查 webpack.conf.js 配置,追加了扩展名 .js

  resolve: {
    extensions: ['.ts', '.js', '.d.ts'],
  },
 
至此,问题解决。

猜你喜欢

转载自www.cnblogs.com/duxing/p/12116427.html