【问题标题】:Nodejs - url Parameter must be a string, not undefinedNodejs - url 参数必须是字符串,不能是未定义的
【发布时间】:2018-06-20 18:30:29
【问题描述】:

每次我导航到相对路径时,我都会收到以下错误:

TypeError: Parameter "url" must be a string, not undefined
at Url.parse (url.js:103:11)

我的 get 方法如下所示:

app.get('/v1/locations', (req, res) => {
const fixieUrl = url.parse(process.env.FIXIE_URL);
const requestedUrl= url.parse('api.clashofclans.com' + req.path);

const options = {
    host: fixieUrl.hostname,
    port: fixieUrl.port,
    path: requestedUrl.href,
    method: 'GET',
    headers: {
        'Content-Type': 'application/json',
        Authorization: 'Bearer **token**',
        'Proxy-Authorization': `Basic ${new Buffer(fixieUrl.auth).toString('base64')}`
    }
};

我肯定添加了带有 FIXIE_URL 的 .env 文件,那会是什么?

【问题讨论】:

  • 您是否尝试过控制台日志 process.env.FIXIE_URL
  • console.log(process.env.FIXIE_URL)const fixieUrl = 之前显示是吗?
  • 它打印出未定义...我也尝试重新启动 IDE,但仍然显示未定义
  • 你导入url模块nodejs.org/api/url.html

标签: node.js express


【解决方案1】:

尝试req.url 而不是process.env.FIXIE_URL

更新

最好把这些分开。

.env 文件集中,并在url.js 中使用这些:

FIXIE_URL_HOST=someUrl
FIXIE_URL_PORT=80

【讨论】:

  • 嗯,是的,我现在这样做了,它是未定义的 - 但为什么呢? ://
  • 第103行,是const fixieUrl还是const requestedUrl?
  • 肯定是 fixieUrl - 已定义请求的Url
  • FIXIE_URL 在 .env 文件中的外观如何?
  • 导出 FIXIE_URL=*someUrl*:80
【解决方案2】:

基于您的评论,因为 process.env.FIXIE_URL 未定义。这意味着未设置环境变量。所以要解决这个问题,你可以在启动你的节点应用程序时这样做

export FIXIE_URL='yourUrl' npm start // or however you start ur node app

或将此 yourUrl 添加到一个常量文件中,然后从那里加载它。

或将export FIXIE_URL='yourUrl' 保存在您的操作系统配置文件中

【讨论】:

    猜你喜欢
    • 2017-02-24
    • 2016-11-30
    • 2017-12-04
    • 1970-01-01
    • 2020-12-30
    • 2019-11-27
    • 2019-08-11
    • 1970-01-01
    • 2018-05-16
    相关资源
    最近更新 更多