webpack:无法阅读属性'匹配'未定义的

时间:2017-09-21 20:07:09

标签: symfony npm webpack webpack-encore

我使用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

我错过了什么?

13 个答案:

答案 0 :(得分:13)

简单的答案只需运行rm -rf package-lock.json

答案 1 :(得分:4)

尝试删除package-lock.json和node_modules文件夹,然后运行npm installyarn install

答案 2 :(得分:2)

请尝试以下操作:

  1. 删除或删除“ node_modules”文件夹和“ package-lock.json”文件。
  2. 在项目目录内的CMD或终端中运行npm install

该问题应该得到解决。

答案 3 :(得分:2)

您需要从应用程序的根目录中删除package-lock.json。之后,您可以更新新软件包。

答案 4 :(得分:2)

使用此cmd命令只需删除package-lock.json

rm -rf package-lock.json

答案 5 :(得分:2)

试试“npm cache clean --force”

这将清除 nmp 缓存并可能解决您的问题

答案 6 :(得分:1)

此消息的另一个原因可能是生成npm的{​​{1}}主要版本与运行package-lock.json的版本之间不匹配。

例如,如果锁定文件是使用npm install生成的,后来又由于对npm@5进行较小的更新而尝试对npm install进行npm@6,则会看到此错误。

这里的解决方案就像其他答案中提到的那样,再次删除了node@8上的node_modules package-lock.jsonnpm install。或留在npm@6上获取锁文件并稍后安装。

答案 7 :(得分:1)

如果您在使用NPM时遇到问题,请使用YARN。 (尤其是Windows用户)

但是您必须先:

  1. 切换前删除node_modules文件夹
  2. 如果使用的话,请使用Git bash作为默认编辑器-我发现在我的系统上,它的播放效果略差
  3. 确保已按照本指南在使用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和所有好东西。

我想解决这个问题已经花了很多年了,想知道为什么有时候事情不起作用。

我希望这可以帮助某个人。

答案 8 :(得分:0)

目前不支持全局安装webpack-encore。但是,错误消息并不是真正的解释。

有一个问题已经打开,可以改进此错误消息:https://github.com/symfony/webpack-encore/issues/36

您应该尝试在本地安装webpack-encore,这是真正的问题。

答案 9 :(得分:0)

configureRuntimeEnvironment方法中添加一个参数后,它开始为我工作:

Encore.configureRuntimeEnvironment('dev');

如果你省略了参数,错误就会一直显示出来。

答案 10 :(得分:0)

自Java 11起,我也遇到了同样的问题。 尝试改为运行CustomerAddress。 它对我有用。

答案 11 :(得分:0)

如果您尝试使用锁定文件npm install,则实际上可能正在寻找安装版本锁定依赖项的npm ci命令。

npm-ci文档:https://docs.npmjs.com/cli/ci.html

答案 12 :(得分:0)

删除package-lock.json文件,然后尝试通过命令-npm install进行安装。