未指定模块的Magento2安装版本


24

我安装了Magento 2的本地副本。自定义模块遇到一些问题。

我遵循以下文件/文件夹结构

app/code/Ps/HelloWorld/etc/module.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
    <module name="Ps_HelloWorld" schema_version="0.0.1" setup_version="0.0.1" />
</config>

在此文件中,我具有以下内容:我刷新了商店缓存,然后得到:

未指定模块“ Ps_HelloWorld”的安装版本。


删除schema_version,然后尝试
Manashvi Birla

它不起作用
Yogesh Karodiya

尝试使用bin/magento cache:flush公用文件夹中的命令行清除缓存
-Smartie

此外,我听说过的更高版本的Beta中也删除了schema_version
Smartie

如果在config.php中引用了一个模块但未安装该模块,也会引发此错误
roman204 '17

Answers:


15

尝试

php -f bin/magento module:enable --clear-static-content Module_Name
php -f bin/magento setup:upgrade

假设您正在运行当前的master分支而不是dev分支


php -f bin/magento setup:upgrade
能详细说明

SSH到您的服务器,然后CD到magento根文件夹
Renon Stewart

RS是magento2官方链接,用于指定所有这些命令。
huzefam 2015年


2
您可以通过runnning获取所有命令的列表php -f bin/magento,它也将提供每个命令的用途
amit_game 2015年

33

就我而言,这是该模块的文件/文件夹许可。

Apache无法读取配置文件。

将以下权限应用于您的模块目录。

chmod 775 <module path> -R

1
是的,在我看来,这就是问题..谢谢;)
Adnan

经过大量搜索,我看到了这个答案,并尝试了最后的尝试。哦,天哪,我的问题得到解决。非常感谢@Nahid Bro :)
Ask Bytes

这也解决了我的问题
Hassan Al-Jeshi

11

参考来源:https : //magentoexplorer.com/magento-2-setup-version-for-module-is-not-specified-how-to-fix (在我的情况下,创建新的Magento 2模块时出现此错误)

由于错误的模块文件/文件夹权限,您可能会遇到此错误,您可以按以下方式更改模块文件夹的权限

chmod 775 <module path> -R

您还可能忘记在模块中添加registration.phpcomposer.json。尝试添加以下文件

/app/code/Namespace/Module/registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Namespace_Module',
    __DIR__
);

/app/code/Namespace/Module/composer.json

{
    "name": "namespace/module",
    "description": "namespace",
    "require": {
      "php": "~5.5.0|~5.6.0|~7.0.0",
      "magento/framework": "100.0.*",
      "magento/module-ui": "100.0.*",
      "magento/module-config": "100.0.*",
      "magento/module-contact": "100.0.*"    
    },
    "type": "magento2-module",
    "version": "100.0.0",
    "license": [
        "OSL-3.0",
        "AFL-3.0"
    ],
    "extra": {
        "map": [
            [
                "*",
                "Namespace/Module"
            ]
        ]
    },
    "autoload": {
        "files": [ "registration.php" ],
        "psr-4": {
            "namespace\\module\\": ""
        }
    }
}

最后运行这些命令

php -f bin/magento module:enable --clear-static-content Module_Name
magento setup:upgrade

希望这可以帮助!


4

我想到的另一种情况是由于对我项目的存储库执行了拉操作,并且该模块已从文件系统中删除。尽管这是有意的,但当时Magento的配置文件中仍保留了一些配置。

从模块中删除对模块的引用app/etc/config.php解决了我的问题。

TL; DR

我确实首先尝试使用CLI的module:disable VendorName_ModuleName命令禁用模块,并且从CLI返回的响应为Unknown module(s): 'VendorName_ModuleName'。我认为这是因为文件系统中已经缺少该文件。由于没有再次使用该模块的意图,因此app/etc/config.php从这一点手动将其删除似乎还是合适的。


2
tl; dr比初始段落长...
Stevie G

1
@StevieG每当我回到这个哈哈哈哈时,我仍然微笑...当我第一次写这篇文章时,我不知道TL; DR意味着我相信什么。“ tl; dr”部分是其他信息,如果您选择这样做或其他的话,可以跳过。
达伦·费尔顿

1

打开您的数据库并找到表setup_module

您的模块Ps_HelloWorld应在此表中。

如果找不到,请尝试手动输入。


0

问题:文件app/etc/config.php是从另一个magento实例复制的(由于错误的文件操作)。因此,我的症状与本问题中描述的症状相同。

解决方案是删除发生问题的Magento实例中没有的所有模块名称,并且工作正常。

请注意,一个更好的解决方案可能是bin/magento module:status,然后bin/magento module:disable是所有有问题的模块。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.