mirror of
https://github.com/dillonkearns/elm-pages-v3-beta.git
synced 2024-12-27 05:44:17 +03:00
Differentiate between missing port data source file and import error
This commit is contained in:
parent
10cf930226
commit
d9ecd328d8
@ -54,26 +54,32 @@ function lookupOrPerform(portsFile, mode, rawRequest, hasFsAccess) {
|
|||||||
resolve(responsePath);
|
resolve(responsePath);
|
||||||
} else {
|
} else {
|
||||||
let portDataSource = {};
|
let portDataSource = {};
|
||||||
let portDataSourceFound = false;
|
let portDataSourceImportError = null;
|
||||||
try {
|
try {
|
||||||
|
if (portsFile === undefined) {
|
||||||
|
throw "missing"
|
||||||
|
}
|
||||||
const portDataSourcePath = path.join(process.cwd(), portsFile);
|
const portDataSourcePath = path.join(process.cwd(), portsFile);
|
||||||
// On Windows, we need cannot use paths directly and instead must use a file:// URL.
|
// On Windows, we need cannot use paths directly and instead must use a file:// URL.
|
||||||
portDataSource = await import(url.pathToFileURL(portDataSourcePath).href);
|
portDataSource = await import(url.pathToFileURL(portDataSourcePath).href);
|
||||||
portDataSourceFound = true;
|
} catch (e) {
|
||||||
} catch (e) {}
|
portDataSourceImportError = e;
|
||||||
|
}
|
||||||
|
|
||||||
if (request.url === "elm-pages-internal://port") {
|
if (request.url === "elm-pages-internal://port") {
|
||||||
try {
|
try {
|
||||||
const { input, portName } = rawRequest.body.args[0];
|
const { input, portName } = rawRequest.body.args[0];
|
||||||
|
|
||||||
if (!portDataSource[portName]) {
|
if (!portDataSource[portName]) {
|
||||||
if (portDataSourceFound) {
|
if (portDataSourceImportError === null) {
|
||||||
throw `DataSource.Port.send "${portName}" is not defined. Be sure to export a function with that name from port-data-source.js`;
|
throw `DataSource.Port.send "${portName}" was called, but I couldn't find a function with that name in the port definitions file. Is it exported correctly?`;
|
||||||
|
} else if (portDataSourceImportError === "missing") {
|
||||||
|
throw `DataSource.Port.send "${portName}" was called, but I couldn't find the port definitions file. Be sure to create a 'port-data-source.ts' or 'port-data-source.js' file and maybe restart the dev server.`;
|
||||||
} else {
|
} else {
|
||||||
throw `DataSource.Port.send "${portName}" was called, but I couldn't find a port definitions file. Create a 'port-data-source.ts' or 'port-data-source.js' file and export a ${portName} function.`;
|
throw `DataSource.Port.send "${portName}" was called, but I couldn't import the port definitions file, because of this exception: \`${portDataSourceImportError}\` Are there syntax errors or expections thrown during import?`;
|
||||||
}
|
}
|
||||||
} else if (typeof portDataSource[portName] !== "function") {
|
} else if (typeof portDataSource[portName] !== "function") {
|
||||||
throw `DataSource.Port.send "${portName}" is not a function. Be sure to export a function with that name from port-data-source.js`;
|
throw `DataSource.Port.send "${portName}" was called, but it is not a function. Be sure to export a function with that name from port-data-source.js`;
|
||||||
}
|
}
|
||||||
await fs.promises.writeFile(
|
await fs.promises.writeFile(
|
||||||
responsePath,
|
responsePath,
|
||||||
|
Loading…
Reference in New Issue
Block a user