小编Vir*_*olf的帖子

将 Sails.js 中的所有 404 响应定向到单页应用程序的 index.html 静态资源?

我有一个 React 16 单页应用程序(使用 创建create-react-app),它被编译到build我的 Sails 1.0 应用程序的目录中,我已更新.sailsrc为将 Sails 指向该目录以加载静态资产,当我加载 localhost:1337 时,一切工作完美:React 应用程序已加载,并且它从我的 Sails 应用程序的端点提取数据。

\n\n

问题是我正在使用 React Router(使用常规 URL 路径,而不是 HashRouter)以及主 index.html 页面之外的任何内容点击 React Router,而不是从 Sails 获取 404。在过去的几年里,我遇到了很多关于这个问题的答案:

\n\n\n\n

我不想重定向到视图或控制器,我只想发送静态build/index.html任何 404 响应的静态文件。至于该列表中的最后一个问题,我无法弄清楚如何将其转化为我想做的事情。

\n\n

已经能够通过添加来做到这一点api/responses/notFound.js能够通过添加以下内容

\n\n
const fs = require(\'fs\');\n\nconst content = fs.readFileSync(\'build/index.html\');\n\nmodule.exports = function notFound () {\n    return this.res.send(content.toString());\n};\n …
Run Code Online (Sandbox Code Playgroud)

single-page-application sails.js

5
推荐指数
0
解决办法
267
查看次数

Node-postgres 的 TypeScript 编译问题

预先声明,我对 TypeScript 相当陌生,所以这可能是一个愚蠢的问题!

我正在尝试对我的 Express/Postgres 应用程序使用与node-postgres 文档中所述相同的设置中所述相同的设置,其中我有一个连接到 PostgreSQL 服务器的模块,并且包含在我需要访问它的任何地方,但我TypeScript 类型遇到一些问题。

在这个例子中,我简化了一切以完全删除 Express。如果我这样做,一切都会正常,并且 TypeScript 的编译器也很高兴:

import { Pool } from 'pg';

const pool = new Pool({
    host: process.env.PG_HOST,
    port: parseInt(process.env.PG_PORT),
    user: process.env.PG_USER,
    password: process.env.PG_PASSWORD,
    database: process.env.PG_DATABASE,
});

(async function getRows() {
    const result = await pool.query('SELECT id, message, created FROM media');

    interface dbObject {
        id: number,
        message: string,
        created: Date
    }
    await result.rows.map((row: dbObject) => {
        console.log(row.id);
        console.log(row.message);
        console.log(row.created);
    })
})()
Run Code Online (Sandbox Code Playgroud)

但是,如果我将这些pg函数移至其自己的单独db.ts模块中:

import { Pool …
Run Code Online (Sandbox Code Playgroud)

node.js node-postgres typescript

5
推荐指数
1
解决办法
4685
查看次数

Mercurial:即使推送到HTTPS存储库,也需要"remote:ssl"

我通过HTTPS运行Apache和hgwebdir.cgi(带有自签名证书),我可以通过浏览器查看存储库并在本地克隆它.我不知道它是否有任何影响,但我正在重写URL以使它们更漂亮:

$ cat .htaccess
Options +ExecCGI
RewriteEngine On
RewriteBase /public
RewriteRule ^$ hgwebdir.cgi  [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) hgwebdir.cgi/$1  [QSA,L]
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行hg push来发送更改时,我得到了这个:

$ hg push
pushing to https://<repository>
searching for changes
http authorization required
realm: Mercurial
user: virtualwolf
password: 
remote: ssl required
Run Code Online (Sandbox Code Playgroud)

Apache设置为将HTTP上的所有请求重定向到HTTPS.远程服务器运行CentOS,Apache 2.2.3和Mercurial 1.3.1(都通过安装yum).

我已经做了很多关于这个问题的搜索,最接近我得到答案的是这个,但它指的是NGINX而不是Apache.

谢谢!

apache ssl mercurial

4
推荐指数
2
解决办法
4770
查看次数

使用Mojo :: Base从模块访问Mojolicious助手?

我有一个现有的应用程序(我的网站),正在整理一些代码,整理后的想法与此处Mojo::Pg示例相同,只是使用单独的模型和控制器文件来保持定义。我的网站访问Flickr和Last.fm的API,并且在中定义了一个帮助器:Site::Helpers

$app->helper(
    get_base_rest_url => sub {
        my ( $self, $config ) =  @_;

        sswitch ( $config ) {
            case 'photos': {
                my $base_url = 'https://api.flickr.com/services/rest/';
                my $user_id  = '7281432@N05';
                my $api_key  = $self->app->config->{ 'api_token' }{ 'flickr' };

                my $url =
                    "$base_url"
                    . "?user_id=$user_id"
                    . "&api_key=$api_key"
                    . "&per_page=" . $self->session->{ per_page }
                    . '&format=json'
                    . '&nojsoncallback=1';

                return $url;
            }

            case 'music': {
                my $base_url = 'https://ws.audioscrobbler.com/2.0/';
                my $username = 'virtualwolf';
                my $api_key  = $self->app->config->{ 'api_token' }{ …
Run Code Online (Sandbox Code Playgroud)

perl mojolicious

3
推荐指数
1
解决办法
1136
查看次数

为 Mojolicious 测试提供描述性测试名称?

我正在整理我的 Mojolicious 测试并为它们指定适当的描述性名称。举个例子:

$t->get_ok( '/api/ninjablock', 'Run a GET against /api/ninjablock with no credentials' )
     ->status_is( 403, '  and it has correctly returned a 403' );
Run Code Online (Sandbox Code Playgroud)

然而,测试输出如下所示:

ok 1 - GET /api/ninjablock
ok 2 -   and it has correctly returned a 403
Run Code Online (Sandbox Code Playgroud)

我认为我遗漏了一些明显的东西,但是如何使第一个测试显示GET /api/ninjablock名称以外的东西?

testing perl mojolicious

3
推荐指数
1
解决办法
69
查看次数

如何配置Sails.js以使用EJS视图助手?

我是Sails.js的新手,我正在尝试使用EJS的视图助手(目前主要用于link_to).我已经看到它没有开箱即用的引用,但我还没有看到任何关于如何配置Sails.js以使用视图助手的noob-friendy描述.目前,我已经生成了一个完全简单的应用程序,sails new <name>而不是其他.

谢谢!

ejs sails.js

2
推荐指数
1
解决办法
3132
查看次数

Postgres 重启后不会侦听 Docker 主机 IP 地址,直到 Postgres 重新启动

我有一个全新的 Debian 9,带有 Docker 18.09(从官方 Docker 存储库安装)和 Postgres 9.6。我已编辑/etc/postgresql/9.6/main/postgresql.conf设置listen_addresses参数:

listen_addresses = '127.0.0.1,172.17.0.1'
Run Code Online (Sandbox Code Playgroud)

进行更改并重新启动 Postgres 后,我的 Docker 容器可以毫无问题地连接到 172.17.0.1 的 Postgres。当我重新启动整个操作系统时,问题就出现了,Postgres 将不会侦听 172.17.0.1,直到我重新启动 Postgres 本身。我已经交换了地址的顺序postgresql.conf,但没有效果,running show listen_addresses;inpsql 表示它正在侦听我指定的两个端口,但sudo netstat -na显示它仅侦听 127.0.0.1:

$ sudo netstat -na
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
Run Code Online (Sandbox Code Playgroud)

重新启动 Postgres ( …

postgresql docker

2
推荐指数
1
解决办法
681
查看次数