我意识到我的 Electron 应用程序不想在 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')
关于node.js - Webpack 在 linux 上找不到 lodash 子模块,但在 macOS 上可以正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46886915/