Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript str.CharAt不是函数-尝试访问服务器路由时_Javascript_Node.js_Express - Fatal编程技术网

Javascript str.CharAt不是函数-尝试访问服务器路由时

Javascript str.CharAt不是函数-尝试访问服务器路由时,javascript,node.js,express,Javascript,Node.js,Express,我不知道我做了什么,但我弄坏了一些东西。正在尝试将API部署到Heroku。当地一切都很好,但后来我想我做错了什么,现在一切都坏了。当我只转到localhost:5000并显示该页面(只是说“hello world”)时,它就工作了,但当我尝试访问任何带有API参数的内容时,例如:localhost:5000/data/2018-10/gen6ou它就在那里。控制台中未显示任何错误。在终端中,我运行了命令:node index.js它显示:str.charAt不是一个函数,但不会中断连接或任何东

我不知道我做了什么,但我弄坏了一些东西。正在尝试将API部署到Heroku。当地一切都很好,但后来我想我做错了什么,现在一切都坏了。当我只转到
localhost:5000
并显示该页面(只是说“hello world”)时,它就工作了,但当我尝试访问任何带有API参数的内容时,例如:
localhost:5000/data/2018-10/gen6ou
它就在那里。控制台中未显示任何错误。在终端中,我运行了命令:
node index.js
它显示:
str.charAt不是一个函数,但不会中断连接或任何东西

index.js

const express=require('express');
常量app=express();
常量池=需要(“./db”)//存储超级机密数据库信息
const cors=要求(“cors”);
const PORT=process.env.PORT | | 5500;
//中间件
应用程序使用(cors());
app.use(express.json());//=>请求正文
应用程序使用(express.static('public'))//index.html,只是说“你好,世界”
//获取数据
app.get(“/data/:date/:tier”),异步(req,res)=>{
试一试{
const{date,tier}=req.params;
const allData=wait pool.query(
“从smogon_usage_stats中选择*,其中日期=1,层=2”,
[日期、级别]
);
const results=allData.rows;
常量输出={“数据”:Object.fromEntries(
结果地图(
item=>[item.pokemon,item]
))
};
res.json(输出);
}捕获(错误){
console.log(错误消息);
};
});
应用程序侦听(端口,()=>{
log(`Server running on port${port}.`);
});
package.json

{
“名称”:“使用服务器”,
“版本”:“1.0.0”,
“说明”:“,
“main”:“index.js”,
“脚本”:{
“开始”:“node index.js”
},
“关键词”:[],
“作者”:“作者”,
“许可证”:“ISC”,
“依赖项”:{
“cors”:“^2.8.5”,
“dotenv”:“^8.2.0”,
“快车”:“^4.17.1”,
“pg”:“^8.5.1”
},
“发动机”:{
“节点”:“14.16.0”,
“npm”:“6.14.11”
},
“代理”:http://localhost:5000"
}
db.js

const{Pool}=require('pg');
require(“dotenv”).config();
const devConfig=`postgresql://${process.env.PG_USER}:
${process.env.PG_PASSWORD}@${process.env.PG_HOST}:
${process.env.PG_PORT}/${process.env.PG_DATABASE}`;
const proConfig={
connectionString:process.env.DATABASE\u URL
};
const conn=新池({
连接字符串:process.env.NODE_env==“生产”?devConfig:proConfig
});
module.exports=conn;

在生产环境中,您的数据库配置对象无效-connectionString
包含另一个对象(proConfig)

你似乎也在找

const devConfig = {
  connectionString: `postgresql://${process.env.PG_USER}:${process.env.PG_PASSWORD}@${process.env.PG_HOST}:${process.env.PG_PORT}/${process.env.PG_DATABASE}`
};

const proConfig = {
  connectionString: process.env.DATABASE_URL
};

const conn = new Pool(process.env.NODE_ENV === "production" ? devConfig : proConfig);


您能提供此错误的完整堆栈跟踪吗?您的
devConfig
真的是多行字符串吗?我可以想象那会引起问题。啊,好吧。谢谢
const connectionString = process.env.NODE_ENV === "production"
  ? process.env.DATABASE_URL
  : `postgresql://${process.env.PG_USER}:${process.env.PG_PASSWORD}@${process.env.PG_HOST}:${process.env.PG_PORT}/${process.env.PG_DATABASE}`;

const conn = new Pool({ connectionString });