我正在尝试使用Composer设置PSR-4,但是我一直在收到错误提示A non-empty PSR-4 prefix must end with a namespace separator.
我的composer.json
中的autoload
如下:
"autoload": {
"psr-4": {
"Acme\\models" : "app/models"
}
},
app/models
是空的。
我做错了什么?我该如何解决?
我正在尝试使用Composer设置PSR-4,但是我一直在收到错误提示A non-empty PSR-4 prefix must end with a namespace separator.
我的composer.json
中的autoload
如下:
"autoload": {
"psr-4": {
"Acme\\models" : "app/models"
}
},
app/models
是空的。
我做错了什么?我该如何解决?
有人发表了评论但后来删除了。他提到我在Acme\\models
的结尾处缺少\\
。使用Acme\\models\\
将消除该消息并使其正常工作。
正如其他人所说,PSR-4需要末尾斜杠
虽然我在Windows中不得不将/
转换为\\
(在Linux上应该可以正常工作):
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
非空的 PSR-4 前缀必须以命名空间分隔符结尾。
命名空间分隔符是 \\
不正确 ⬇️⬇️⬇️
"autoload": {
"psr-4": {
"Acme\\models" : "app/models"
}
},
正确 ⬇️⬇️⬇️
"autoload": {
"psr-4": {
"Acme\\models" : "app/models/"
}
},
PSR-4
要求使用尾部斜杠(需要双斜杠,因为它需要转义)。 - Connor Tumblesoncomposer validate
也能很好地指出问题所在。 - dave