node.js - Webpack 在 linux 上找不到 lodash 子模块,但在 macOS 上可以正常工作

标签 node.js webpack ecmascript-6 electron babeljs

我意识到我的 Electron 应用程序不想在 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.js snakeCase.js ,但您正在尝试导入 clonedeepsnakecase分别是不存在的。 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/

相关文章:

vue.js - Vue CLI 从项目模块动态导入

javascript - 将 Webpack 用于后端应用程序会降低性能吗?

javascript - .map() 一个 Javascript ES6 map ?

javascript - Leaflet - 覆盖点击事件的图层

javascript - 如何迭代关联数组并以 JSLint 方式删除一些元素(JavaScript,node.js 4.2.3)

node.js - 无法使用 NodeGit 打开存储库

javascript - 如何获得源映射以与 Chrome 开发工具和 webpack 一起使用?

javascript - Javascript ES6 类中的递归

javascript - 用于 Rocket Chat iframe 身份验证的 NodeJS 应用程序抛出 SyntaxError : Unexpected token (

javascript - 在 shell 脚本中运行两个 Node 进程