我正在构建我的第一个Angular.js应用程序,我正在使用Yeoman.

Yeoman使用Grunt来运行 node .js使用命令"grunt server"连接服务器.

我正在html5模式下运行angular应用程序.根据angular文档,这需要修改服务器,将所有请求重定向到应用程序的根目录(index.html),因为angular应用程序是单页ajax应用程序.

"使用[html5]模式需要在服务器端重写URL,基本上你必须重写所有指向应用程序入口点的链接(例如index.html)"

我试图解决的问题在this个问题中有详细说明.

如何修改grunt服务器以将所有页面请求重定向到索引.html页面?

推荐答案

首先,使用命令行,使用GrunFile导航到目录.

在CLI中键入以下命令:

npm install --save-dev connect-modrewrite

在grunt文件的顶部写下:

var modRewrite = require('connect-modrewrite');

接下来,您只需要在connect中添加modRewrite个:

modRewrite(['!\\.html|\\.js|\\.svg|\\.css|\\.png$ /index.html [L]']),

下面是我的GrunFile中的"连接"的示例.js.你不必担心我的lrSnippet和SSinclude.你需要做的主要事情就是把modRewrite写进go .

        connect: {
        options: {
            port: 9000,
            // Change this to '0.0.0.0' to access the server from outside.
            hostname: '0.0.0.0',
        },
        livereload: {
            options: {
                middleware: function (connect) {
                return [
                        modRewrite(['!\\.html|\\.js|\\.svg|\\.css|\\.png$ /index.html [L]']),
                        lrSnippet,
                        ssInclude(yeomanConfig.app),
                        mountFolder(connect, '.tmp'),
                        mountFolder(connect, yeomanConfig.app)
                        ];
                }
            }
        },
        test: {
            options: {
                middleware: function (connect) {
                    return [
                    mountFolder(connect, '.tmp'),
                    mountFolder(connect, 'test')
                    ];
                }
            }
        },
        dist: {
            options: {
                middleware: function (connect) {
                    return [
                    mountFolder(connect, yeomanConfig.dist)
                    ];
                }
            }
        }
    },

Node.js相关问答推荐

使用Moongose处理node.js中重定向的then()块链

Mongoose-不会更新数组中的属性值

无法生成仅具有生产依赖项的 node 类型脚本项目

谷歌应用程序脚本UrlFetchApp和nodejs-axios返回不同的结果;MyFitnessPal日记

仅在一次查询中 MongoDB 上最近的一对位置

Mongodb - 在数组数组中查找()

try 使用 pdf.js 时 pdf.getPage 不是函数

无法将示例 Node.js 应用程序部署到 AWS Elastic Beanstalk

将 null 推入管道后,node.js 可写完成未发出

为什么这个 module.export 函数如果我直接传递它就不起作用,但如果我将它包装在一个匿名函数中就可以工作

Zod 模式中的self 数组

如何在不使用位置运算符 $ 的情况下更新 mongodb 文档中数组中的嵌套文档?

使用Typescript 时我应该避免循环导入吗?

使用中的端口代码:'EADDRINUSE',即使在 kill 命令之后

Chrome 浏览器未将 if-modified-since 标头发送到服务器

Base64 编码一个 javascript 对象

如何在 Node.js 中使用 chmod

为什么模块级返回语句在 Node.js 中起作用?

如何在 NodeJS 中拆分和修改字符串?

Puppeteer 等待所有图像加载然后截图