webpack:无法读取未定义的属性“匹配”
Posted
技术标签:
【中文标题】webpack:无法读取未定义的属性“匹配”【英文标题】:webpack: Cannot read property 'match' of undefined 【发布时间】:2018-03-03 07:20:17 【问题描述】:我已经使用 npm 安装了 webpack (Symfony encore),如下所示:
sudo npm install -g @symfony/webpack-encore --save-dev
我从/var/www/project
运行这个
在处理 Windows 主机/Linux 来宾时,由于包管理器和共享文件夹的问题,我需要全局安装。
我无法将 webpack (node_modules) 安装在与 /var/www/project
相同的目录中(或在其下)
所以我的 package.json 文件看起来像这样:
"name": "test",
"version": "1.0.0",
"description": "This is a test",
"main": "index.js",
"dependencies": ,
"devDependencies":
"@symfony/webpack-encore": "^0.15.0"
,
"scripts":
"test": "echo \"Error: no test specified\" && exit 1"
,
"author": "Alex",
"license": "MIT"
我使用这个从/var/www/project
运行安可
/usr/local/bin/encore dev
我得到这个可爱的输出作为回报:
Running webpack ...
TypeError: Cannot read property 'match' of undefined
- index.js:125 parse
[lib]/[webpack-encore]/[yargs-parser]/index.js:125:12
- index.js:761 Function.Parser.detailed
[lib]/[webpack-encore]/[yargs-parser]/index.js:761:10
- yargs.js:938 Object.Yargs.self._parseArgs
[lib]/[webpack-encore]/[yargs]/yargs.js:938:27
- yargs.js:927 Object.get [as argv]
[lib]/[webpack-encore]/[yargs]/yargs.js:927:19
- index.js:725 Object.configureRuntimeEnvironment
[lib]/[@symfony]/webpack-encore/index.js:725:54
- index.js:770 Proxy.parameters
[lib]/[@symfony]/webpack-encore/index.js:770:45
- webpack.config.js:3 Object.<anonymous>
/var/www/project/webpack.config.js:3:8
- module.js:573 Module._compile
module.js:573:30
- module.js:584 Object.Module._extensions..js
module.js:584:10
- module.js:507 Module.load
module.js:507:32
我错过了什么?
【问题讨论】:
【参考方案1】:目前不支持全局安装webpack-encore
。然而,错误消息并不是真正的解释性。
有一个问题可以改进此错误消息:https://github.com/symfony/webpack-encore/issues/36
你应该尝试在本地安装webpack-encore
,这是真正的问题。
【讨论】:
我有点想通了——不幸的是,由于在使用 Windows 主机和 Linux 客户机时存在共享文件夹(符号链接)问题,webpack 似乎不喜欢“本地”安装。我在使用 php Composer 包管理器时遇到了类似的问题,最后通过更改二进制文件的位置解决了这个问题。我使用 --no-symlink 选项在 webpack 和 NPM 上取得了类似的成功(一天)。但这已经停止工作了。【参考方案2】:向configureRuntimeEnvironment
方法添加参数后,它开始为我工作:
Encore.configureRuntimeEnvironment('dev');
不知何故,如果你省略参数,错误就会不断出现。
【讨论】:
【参考方案3】:简单的答案只需运行
rm -rf package-lock.json
【讨论】:
不,不应该。这是“推荐的解决方法”,但在实践中却令人难以置信。在package.json
中有一个锁定的依赖项并不能确保那个 依赖项的依赖项将保持一致,因此删除package-lock.json
文件、npm install
ing 并生成一个新的锁定文件*将允许 这些子依赖项发生变化,这通常会完全破坏任何未来的构建。使用现有的锁定文件通常是维护构建的唯一方法(毕竟这是文件的 POINT),因此完全删除它与它存在的原因背道而驰。
这个简短的回答给我留下了深刻的印象
简单评论:如果我想要它怎么办,因为 package-lock.json 有我知道的包的精确版本,不像 package.json 不提供特定版本。
很好的答案。谢谢。虽然在阅读 ans 之后我只是手动删除了 package-lock.json :)
正如@kevlarr 所说,当您依赖锁定文件时,这不是一个有效的解决方案(例如,当使用 npm ci 时,您必须有一个锁定文件)【参考方案4】:
尝试删除 package-lock.json 和 node_modules 文件夹,然后运行 npm install
或 yarn install
【讨论】:
【参考方案5】:此消息的另一个原因可能是生成 package-lock.json
的 npm
主要版本与运行 npm install
的版本不匹配。
例如,如果锁定文件是使用npm@5
生成的,然后您尝试在npm@6
上使用npm install
,因为可以说是次要的node@8
更新,您将看到此错误。
这里的解决方案就像其他答案中提到的那样,再次删除npm@6
上的node_modules
和 package-lock.json
和npm install
。或者留在npm@5
上获取lockfile 并稍后安装。
【讨论】:
【参考方案6】:自 Java 11 以来我也遇到了同样的问题。
尝试运行yarn install ...
。
它对我有用。
【讨论】:
【参考方案7】:如果您尝试使用锁定文件 npm install
,您实际上可能正在寻找安装版本锁定依赖项的 npm ci
命令。
npm-ci 文档:https://docs.npmjs.com/cli/ci.html
【讨论】:
【参考方案8】:试试下面的:
-
删除或删除“node_modules”文件夹和“package-lock.json”文件。
在项目目录内的 CMD 或终端中运行
npm install
。
问题应该解决了。
【讨论】:
【参考方案9】:如果您在使用 NPM 时遇到问题,请使用 YARN。 (尤其是 Windows 用户)
但您必须先:
-
切换前删除 node_modules 文件夹
如果您正在使用 Git bash 作为您的默认编辑器 - 我发现在我的系统上它只是播放不那么粗糙
确保您已按照本指南使用 Github (https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) 在您的计算机上设置 SSH 密钥。不要跳过这一步,否则包将无法正确下载
此外,您可能想考虑使用 Laragon 来拥有标准化的开发环境,而不必确保自己安装了 WAMP 和各种好东西。
多年来,我一直在努力解决这个问题,想知道为什么有时事情不起作用。
我希望这对那里的人有所帮助。
【讨论】:
请同时阅读日志以确保在尝试运行“yarn install”时没有缺少依赖项,并使用“yarn add PACKAGE-NAME”手动添加它们【参考方案10】:您需要从应用程序的根目录中删除package-lock.json
。在此之后,您可以更新您的新软件包。
【讨论】:
【参考方案11】:删除 package-lock.json 文件并通过命令 - npm install 重试安装。
【讨论】:
【参考方案12】:使用此 cmd 命令删除 package-lock.json
:
rm -rf package-lock.json
【讨论】:
【参考方案13】:试试“npm cache clean --force”
这将清除 nmp 缓存并可能解决您的问题
【讨论】:
感谢您的 sn-p,它可能会提供一些有限的即时帮助。 proper explanation 将通过展示为什么这是解决问题的好方法,并使其对有其他类似问题的未来读者更有用,从而大大提高其长期价值。请edit您的回答添加一些解释,包括您所做的假设。【参考方案14】:尝试在你的项目目录中重建 node-sass
npm 重建节点-sass
【讨论】:
以上是关于webpack:无法读取未定义的属性“匹配”的主要内容,如果未能解决你的问题,请参考以下文章
未捕获的类型错误:在 webpack 重建 CommonsChunkPlugin 后无法读取未定义的属性“调用”
骨干木偶和 Webpack - 未捕获的类型错误:无法读取未定义的属性“收音机”
webpack TypeError:无法读取未定义的属性“已解决”
Webpack 4 css模块TypeError:无法读取未定义的属性“上下文”