Description
my system is windows
node version: Node.js v18.15.0
database: Postgresql
When I run npm start, something went wrong
C:\Users\a\Desktop\Parse-Server>npm start
parse-server-example@1.4.0 start
node index.js
warn: DeprecationWarning: The Parse Server option 'allowClientClassCreation' default will change to 'false' in a future version.
warn: DeprecationWarning: The Parse Server option 'allowExpiredAuthDataToken' default will change to 'false' in a future version.
Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file and data are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol 'c:'
at new NodeError (node:internal/errors:399:5)
at throwIfUnsupportedURLScheme (node:internal/modules/esm/resolve:1059:11)
at defaultResolve (node:internal/modules/esm/resolve:1135:3)
at nextResolve (node:internal/modules/esm/loader:163:28)
at ESMLoader.resolve (node:internal/modules/esm/loader:838:30)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
at ESMLoader.import (node:internal/modules/esm/loader:525:22)
at importModuleDynamically (node:internal/modules/cjs/loader:1186:29)
at importModuleDynamicallyWrapper (node:internal/vm/module:429:21)
at importModuleDynamically (node:internal/vm:106:46) {
code: 'ERR_UNSUPPORTED_ESM_URL_SCHEME'
}
node:internal/process/esm_loader:97
internalBinding('errors').triggerUncaughtException(
^
Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file and data are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol 'c:'
at new NodeError (node:internal/errors:399:5)
at throwIfUnsupportedURLScheme (node:internal/modules/esm/resolve:1059:11)
at defaultResolve (node:internal/modules/esm/resolve:1135:3)
at nextResolve (node:internal/modules/esm/loader:163:28)
at ESMLoader.resolve (node:internal/modules/esm/loader:838:30)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
at ESMLoader.import (node:internal/modules/esm/loader:525:22)
at importModuleDynamically (node:internal/modules/cjs/loader:1186:29)
at importModuleDynamicallyWrapper (node:internal/vm/module:429:21)
at importModuleDynamically (node:internal/vm:106:46) {
code: 'ERR_UNSUPPORTED_ESM_URL_SCHEME'
}
Node.js v18.15.0
Activity
parse-github-assistant commentedon Apr 23, 2023
Thanks for opening this issue!
shaobowei88 commentedon May 5, 2023
The same error use Node.js v18.12.1 at windows 10. The node path module path.resolve return path with driver letter,not file:// protocal.
Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file, data are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol 'e:'
The error is occur at import cloud function,modify node_modules\parse-server\lib\ParseServer.js is running now.o(╥﹏╥)o
youwhoyou commentedon Jun 29, 2023
we are also experiencing this error. Is that a solution for windows users?
mtrezza commentedon Jun 29, 2023
Is this a Parse Server issue, rather than a Parse Server example issue? Where is the problematic code?
justav08 commentedon Jun 30, 2023
Hi, I think it's a Parse Server example issue and the problem is the import of the 'non ES module'-file cloud/main.js because of the error message on start with 'node index.js':
so I renamed cloud/main.js to cloud/main.cjs (and deleted the
await
in the main.cjs because of an additional error) and the example works ...prafull-opensignlabs commentedon Nov 16, 2023
spec :
os: window 11
package : node 20.9.0
parse-server-example latest code
In above code I highlighted cloud code line in which I get this same error only on windows and it run perfectly fine on macos what should I do ?
please help @mtrezza
ok111net commentedon Dec 10, 2023
@prafull-opensignlabs i miss the same error too!
ok111net commentedon Dec 10, 2023
this error was resolve:
this param suport function and string type,change it into function
1.man.js
const cloud=function(){ import('./functions.js'); }; export default cloud;
2.index.js:
import cloud from './cloud/main.js'; config = { databaseURI: "xxxxx", cloud, ....otherConfigs, }
@prafull-opensignlabs
prafull-opensignlabs commentedon Dec 11, 2023
@ok111net work like charm 👍
mtrezza commentedon Dec 13, 2023
Can this issue be closed?
prafull-opensignlabs commentedon Dec 13, 2023
As a mention in documentation of parse server , it's not working in windows that's way instead of that we have to use below code to work windows
config = { databaseURI: "xxxxx", cloud: cloud: function () { import('./cloud/main.js'); },, ....otherConfigs, }
so you decide @mtrezza
mtrezza commentedon Dec 13, 2023
Do you suggest a change in the source code or an amendment to the docs?
EhsanParsania commentedon Jan 10, 2024
I tried @prafull-opensignlabs code, however it didn't work for me, but if somehow this code works, adding this config as an option to the parse-server-example will be a good idea, since many of the parse-server users use Windows OS @mtrezza
prafull-opensignlabs commentedon Jan 10, 2024
I have implement parse server in type : module way instead of common js then it work for me you can try same
prafull-opensignlabs commentedon Jan 10, 2024
sure
I have create main.js file which inlcudes my cloud functions
code from main.js file
Parse.Cloud.define('myfunc', async(request) =>{
return "hello world";
});
and I have changed this line of code
cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js'
with below code in index.js which config variable which is pass new ParseServer instanceconst config = {
databaseURI: 'mongodb://localhost:27017/dev',
cloud: function () {
import('./cloud/main.js');
},
appId: process.env.APP_ID || 'myAppId',
masterKey: process.env.MASTER_KEY || '',
serverURL: process.env.SERVER_URL
}
to start server below code use
const mountPath = process.env.PARSE_MOUNT || '/app';
const server = new ParseServer(config);
await server.start();
app.use(mountPath, server.app);
fix parse-community#432: cloud path is not working in Windows due abs…
EhsanParsania commentedon Jan 11, 2024
This worked well, thanks @prafull-opensignlabs , but why you've changed
/parse
to/app
for the mountPath?prafull-opensignlabs commentedon Jan 11, 2024
Because I want parse server on
/app
route you can change it as per your need