Webpack 在 Linux 上找不到 lodash 子模块,但在 macOS 上工作正常



我已经意识到我的电子应用程序不想在Linux上正确构建,而在macOS上它工作正常。我不太清楚为什么。

所以在macOS上这工作正常

let _snakecase = require('lodash/snakecase')
let _cloneDeep = require('lodash/clonedeep')
let _filter = require('lodash/filter')

在 linux 上,这会抛出错误,指出它找不到依赖项lodash/snakecaselodash/clonedeep。奇怪的是,它可以找到lodash/filter.我只能像这样导入它才能让它工作:

import {snakecase as _snakecase} from 'lodash'
import {clonedeep as _cloneDeep} from 'lodash'
import {filter as _filter} from 'lodash'

但我的问题是为什么我可以require('lodash/filter')而不能require('lodash/snakecase')?我什至不知道从哪里开始调试它。

当我尝试要求lodash/snakecase时的确切错误:

This dependency was not found:
* lodash/snakecase in ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js?type=script&index=0&bustCache!./src/views/modals/ChannelModal.vue
默认情况下,

macOS 上的文件系统区分大小写,这意味着当您请求不存在的文件时,假设file.js,它会很乐意为您提供FILE.js该文件是否存在。在区分大小写的文件系统上,它只会告诉您file.js不存在并导致错误。Linux 上的文件系统区分大小写。

您要查找的文件是 cloneDeep.jssnakeCase.js ,但您尝试分别导入不存在的clonedeepsnakecaselodash/filter之所以有效filter.js是因为它确实存在。

正确的导入是:

let _snakecase = require('lodash/snakeCase')
let _cloneDeep = require('lodash/cloneDeep')

相关内容

最新更新