Node.js 防止vue cli(网页包)拾取所有非文件获取路由-sails环境
使用Node.js 防止vue cli(网页包)拾取所有非文件获取路由-sails环境,node.js,express,webpack,vue.js,sails.js,Node.js,Express,Webpack,Vue.js,Sails.js,使用Vue init webpack project name创建Vue项目、进行设置并最终调用npm run dev时,您可以在localhost:8080上打开浏览器并查看默认页面。事实上,您可以导航到几乎任何“非文件”路径,例如/a/b/c-d,Vue仍然会选择它。它似乎没有选择的唯一路径是以*结尾的路径,以及仅以结尾的路径。例如/a.js,/b.,/c/d.png 我正在尝试将Vue与REST后端(Sails.js,using)一起使用,这意味着我将拥有类似于GET/api/users和
Vue init webpack project name
创建Vue项目、进行设置并最终调用npm run dev
时,您可以在localhost:8080
上打开浏览器并查看默认页面。事实上,您可以导航到几乎任何“非文件”路径,例如/a/b/c-d
,Vue仍然会选择它。它似乎没有选择的唯一路径是以*
结尾的路径,以及仅以
结尾的路径。例如/a.js
,/b.
,/c/d.png
我正在尝试将Vue与REST后端(Sails.js,using)一起使用,这意味着我将拥有类似于GET/api/users
和类似的路由。使用该sails生成器,将生成一个常见的webpack Vue项目,并更改一些配置文件,以便将webpack的输出放在sails使用的.tmp
目录中,以便实际提供文件
我尝试查看源文件,注意到,通常代码< NPM运行DeV调用<代码>节点构建/DEVServer。JS<代码>,作为PAR <代码>包。JSON<代码>,但在那里我看不到它实际上将所有东西重定向到单个HTML文件。这已经很有帮助了,但是在快速检查之后,我注意到在我的sails设置中,该文件实际上从未被使用过(插入一个简单的
console.log
,它从未运行过)
Vue如何(更确切地说,在哪里)将所有“非文件”路由重定向到单个路径
这可能会在我找到它的方式和位置后变得很清楚,但否则,我如何更改它,并且只让Vue选择特定的快速路线,如路径集?与中一样,理想情况下,我会让它选择诸如/: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选择每条路由的是历史回退API中的build/dev server.js
。这很好,我希望能帮助人们寻找答案,但在这个特定的设置中,该文件从未被实际使用过,我对正在使用的内容一无所知。我知道很少有人使用我提到的npm软件包,但是如果有人能看一下,那将是非常有帮助的
编辑:找到确切的停用位置
必须浏览大量源代码,看到
webpack/node_modules/sails hook webpack vue/index.js
,只需注释掉第114行和第120行,正如我所看到的,您不需要webpack模板提供的额外服务器配置。
我会建议您切换到网页简单模板
dev服务器位于build文件夹中,该文件夹名为dev server.js。它使用express设置本地服务器来为您的文件提供服务
如果您设置了自己的服务器来提供文件,请记住为build*.js文件提供服务器 最终得到了:D
问题在于,在正常的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