刚开始使用 React。我创建了一个应用程序,create-react-app它应该运行一段sub-directory时间,同时对不同的路径进行 API 调用。
反应应用程序:
服务器上的位置: /var/www/myapp/build
端点: https://foo.example.com/analytics
数据 API 端点: https://foo.example.com/api/data
Nginx 设置
location /analytics {
root /var/www/myapp/build;
try_files $uri /index.html;
}
Run Code Online (Sandbox Code Playgroud)
"homepage":"https://foo.example.com/analytics"在客户端的 中设置时package.json,所有资源路径似乎都是正确的(即https://foo.example.com/analytics/static/...),但是在检查网络.../api/data时,我的浏览器的网络检查器中没有显示请求,并且应用程序没有正确生成。
在App's API call(fetch('https://foo.example.com/api/data')而不是fetch('/api/data')) 中使用绝对路径似乎也无济于事。
而不是当我设置"homepage":"."的package.json,改变它的Nginx的配置担任服务器的根目录,应用程序的作品反应build目录。
server {
root /var/www/myapp/build;
}
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,该应用程序也可以在 下使用https://foo.example.com,这是我不想要的。
我强烈怀疑这与路由有关,但无法弄清楚如何解决它。所以任何帮助将不胜感激!
--- 编辑/解决方案 ---
我怀疑这是最直接的解决方案,但以下设置对我有用:
反应应用
在package.json,"homepage":"./analytics"运行前设置npm run build
Nginx 配置:
location = /analytics …Run Code Online (Sandbox Code Playgroud) 正如标题所示,我在使用时遇到语法错误node-postgres。代码如下所示
const {Pool, Client} = require('pg')
const pool = new Pool({
user: '<user>',
host: '<host>',
database: '<database>',
password: '<pw>',
port: <port>
})
let query = `SELECT * FROM user JOIN notifications ON user.user_id = notifications.user_id WHERE user_id=$1`
let values = ["123"]
pool.query(query, values)
.then(() => { /* do something */} )
.catch((err) => { console.log(err)} )
Run Code Online (Sandbox Code Playgroud)
根据此查询,我收到以下消息的语法错误
syntax error at or near "."
Run Code Online (Sandbox Code Playgroud)
由于相同的查询在 pgAdmin 中运行良好,我的猜测是它是特定于模块的,但我还没有弄清楚问题是什么。
非常感谢任何帮助!
编辑:添加了缺失的括号,感谢 Sreeragh AR
我request-promise-native在 node.js 上使用模块。我正在调用的 API 需要标头中的密钥以及Content-Type: Application/json. 使用 postman 进行测试时,我必须使用 Body > raw 来传递必要的参数。这工作得很好。
但是,当我对请求库进行相同尝试时,正文没有正确提交。这是我尝试过的:
const request = require('request-promise-native')
let options = {
method: 'POST',
uri: 'https://api.com',
headers: {
'X-Api-Key': <key>,
'Content-Type': 'Application/json'
}
}
options.body = {
key1: 'value1',
key2: 'value2'
}
// and since the above didn't work also this:
options.form = {
key1: 'value1',
key2: 'value2'
}
request(options)
.then(function(res){ /* do something */}
Run Code Online (Sandbox Code Playgroud)
我确实得到了回应,但不是基于身体参数。如何复制“原始”身体?