繁体   English   中英

阻止vue-cli(webpack)拾取所有非文件GET路由-Sails Environment

[英]prevent vue-cli (webpack) from picking up all non-file GET routes - sails environment

当使用vue init webpack project-name创建一个Vue项目时,进行设置,最后调用npm run dev您可以在localhost:8080上打开浏览器并查看默认页面。 实际上,您几乎可以导航到任何“非文件”路径,例如/a/b/cd ,而Vue仍会选择它。 它似乎没有选择的唯一路径是以.*结尾的路径和仅以.*结尾的路径. 例子是/a.js /b. ,/ /c/d.png

我正在尝试将Vue与REST后端一起使用(Sails.js,使用sails -generate-new-webpack-vue ),这意味着我将拥有与GET /api/users类似的路由。 使用该sails生成器,将生成一个常见的webpack Vue项目,并更改了一些配置文件,以便将webpack的输出放到sails使用的.tmp目录中,以便实际提供文件。

我尝试查看源文件,发现通常npm run dev调用node build/dev-server.js作为par package.json ,但是在那儿我看不到它实际上将所有内容重定向到单个html文件的位置。 这本来是有帮助的,但是在快速检查之后,我注意到在我的sails设置中,该文件实际上从未使用过(插入了一个从未运行过的简单console.log )。

Vue如何将所有“非文件”路由重定向(或在何处)到单个路径?

一旦我知道它的位置和方式,这可能会变得很清楚,但是否则,我将如何更改它,只让Vue拾取一组特定的类似于Express-Route的路径? 如上所示,理想情况下,我会选择/:username/profile路由

答案不一定特定于风帆,尽管如果您有其他信息,可能会有所帮助。

编辑:重新创建的步骤

npm i -g sails sails-generate-new-webpack-vue vue-cli
echo "{\"generators\":{\"modules\":{\"new\":\"sails-generate-new-webpack-vue\"}}}" > .sailsrc
sails new test-project

编辑:原来是特定的风帆

事实证明,使Vue选择每条路线的原因是在build/dev-server.js ,它是历史回退API。 太好了,我希望能对寻找答案的人们有所帮助,但是通过这种特定的设置,该文件实际上从未使用过,对于所使用的文件我一无所知。 我的确意识到使用我提到的npm软件包的人很少,但是如果有人可以看一下,那将非常有帮助!

编辑:确切地找到停用它的位置

必须查看大量的源代码,并看到webpack/node_modules/sails-hook-webpack-vue/index.js ,只需要注释掉第114和120行

如我所见,您不需要webpack模板提供的额外服务器配置。 我建议您切换到简单的webpack模板。

dev服务器位于build文件夹中,该文件名为dev-server.js 它使用express来设置本地服务器来提供文件。

如果您设置自己的服务器来提供文件,请务必记住将build * .js文件作为服务器。

最终得到它:D

问题在于history-api-fallback中间件 ,通常在常规Vue项目的build/dev-server.js切换到中间件 但是通过我的设置,它最终被引入到本地webpack/node_modules/sails-hook-webpack-vue/index.js的第114和120行中:

sails.config.http.middleware.historyFallback = historyFallback();
...
sails.config.http.middleware.order.unshift('historyFallback');

您只需要注释掉。

然后,您可以在config/routes.js根据需要指示路由,并使它们指向index.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM