我已经意识到我的电子应用程序不想在Linux上正确构建,而在macOS上它工作正常。我不太清楚为什么。
所以在macOS上这工作正常
let _snakecase = require('lodash/snakecase')
let _cloneDeep = require('lodash/clonedeep')
let _filter = require('lodash/filter')
在 linux 上,这会抛出错误,指出它找不到依赖项lodash/snakecase
和lodash/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.js
和 snakeCase.js
,但您尝试分别导入不存在的clonedeep
和snakecase
。 lodash/filter
之所以有效filter.js
是因为它确实存在。
正确的导入是:
let _snakecase = require('lodash/snakeCase')
let _cloneDeep = require('lodash/cloneDeep')