Uncaught TypeError: URL is not a constructor using

2020-02-26 23:46发布

I am trying to read a file using WHATWG URL object support here

and I am getting this error: Uncaught TypeError: URL is not a constructor

here is my code:

var fs = require("fs");                                     
const { URL } = require('url');
var dbPath = 'file://192.168.5.2/db/db.sqlite';
const fileUrl = new URL(dbPath);

4条回答
别忘想泡老子
2楼-- · 2020-02-27 00:26

Are you using Node 6 instead of Node 8?

Node 6

const url = require('url');
const myUrl = url.parse('http://example.com');
const myUrlString = url.format(myUrl);

https://nodejs.org/dist/latest-v6.x/docs/api/url.html#url_url

Node 8

const { URL } = require('url');
const myUrl = new URL('http://example.com');
const myUrlString = myUrl.toString();

https://nodejs.org/dist/latest-v8.x/docs/api/url.html#url_url

查看更多
一夜七次
3楼-- · 2020-02-27 00:40

I faced the same issue, then I looked into the url module and found a solution

For Node V6 use,

const URL = require('url').Url;

or

const { Url } = require('url'); 

If you look into the module, it exports 5 methods one of which is Url, so if you need to access Url, you can use either of the two methods

查看更多
劳资没心,怎么记你
4楼-- · 2020-02-27 00:46

Node v10

URL Class

v10.0.0 | The class is now available on the global object.

As mentioned here: https://nodejs.org/docs/latest-v10.x/api/url.html#url_class_url

So this should work without require('url'):

const myUrl = new URL('http://example.com');
查看更多
forever°为你锁心
5楼-- · 2020-02-27 00:46

The docs you took this info out are for the node of version 8.4.0.

If it does not work for you, that means that your node is of version 6.11.2. Then, just change the letter case of URL -

const { Url } = require('url');
const myUrl = new Url('http://example.com'); 

because url module exports Url, not URL.

查看更多
登录 后发表回答