mirror of https://github.com/status-im/metro.git
Move package resolution error to its own file
Reviewed By: rafeca Differential Revision: D7180926 fbshipit-source-id: 24f14a662bbfc776c02093339f571db32af0be90
This commit is contained in:
parent
94028f16c1
commit
22b5fef24d
|
@ -14,6 +14,7 @@
|
|||
"dependencies": {
|
||||
"jest-haste-map": "^22.4.2",
|
||||
"lodash.throttle": "^4.1.1",
|
||||
"metro-resolver": "^0.31.0",
|
||||
"wordwrap": "^1.0.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @flow
|
||||
* @format
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
const {formatFileCandidates} = require('metro-resolver');
|
||||
const {InvalidPackageError} = require('metro-resolver');
|
||||
|
||||
class PackageResolutionError extends Error {
|
||||
originModulePath: string;
|
||||
packageError: InvalidPackageError;
|
||||
targetModuleName: string;
|
||||
|
||||
constructor(opts: {|
|
||||
+originModulePath: string,
|
||||
+packageError: InvalidPackageError,
|
||||
+targetModuleName: string,
|
||||
|}) {
|
||||
const perr = opts.packageError;
|
||||
super(
|
||||
`While trying to resolve module \`${opts.targetModuleName}\` from file ` +
|
||||
`\`${opts.originModulePath}\`, the package ` +
|
||||
`\`${perr.packageJsonPath}\` was successfully found. However, ` +
|
||||
`this package itself specifies ` +
|
||||
`a \`main\` module field that could not be resolved (` +
|
||||
`\`${perr.mainPrefixPath}\`. Indeed, none of these files exist:\n\n` +
|
||||
` * \`${formatFileCandidates(perr.fileCandidates)}\`\n` +
|
||||
` * \`${formatFileCandidates(perr.indexCandidates)}\``,
|
||||
);
|
||||
Object.assign(this, opts);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PackageResolutionError;
|
|
@ -11,7 +11,9 @@
|
|||
'use strict';
|
||||
|
||||
const AmbiguousModuleResolutionError = require('./AmbiguousModuleResolutionError');
|
||||
const PackageResolutionError = require('./PackageResolutionError');
|
||||
|
||||
module.exports = {
|
||||
AmbiguousModuleResolutionError,
|
||||
PackageResolutionError,
|
||||
};
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
const AmbiguousModuleResolutionError = require('./errors/AmbiguousModuleResolutionError');
|
||||
const Logger = require('./Logger');
|
||||
const PackageResolutionError = require('./errors/PackageResolutionError');
|
||||
const Terminal = require('./Terminal');
|
||||
|
||||
const formatBanner = require('./formatBanner');
|
||||
|
@ -19,6 +20,7 @@ const formatBanner = require('./formatBanner');
|
|||
module.exports = {
|
||||
AmbiguousModuleResolutionError,
|
||||
Logger,
|
||||
PackageResolutionError,
|
||||
Terminal,
|
||||
formatBanner,
|
||||
};
|
||||
|
|
|
@ -14,7 +14,8 @@ const path = require('path');
|
|||
|
||||
const {AmbiguousModuleResolutionError} = require('metro-core');
|
||||
const {DuplicateHasteCandidatesError} = require('jest-haste-map').ModuleMap;
|
||||
const {formatFileCandidates, InvalidPackageError} = require('metro-resolver');
|
||||
const {InvalidPackageError} = require('metro-resolver');
|
||||
const {PackageResolutionError} = require('metro-core');
|
||||
|
||||
import type DependencyGraphHelpers from './DependencyGraphHelpers';
|
||||
import type {Options as TransformWorkerOptions} from '../../JSTransformer/worker';
|
||||
|
@ -61,7 +62,6 @@ type Options<TModule, TPackage> = {|
|
|||
class ResolutionRequest<TModule: Moduleish, TPackage: Packageish> {
|
||||
_immediateResolutionCache: {[key: string]: TModule, __proto__: null};
|
||||
_options: Options<TModule, TPackage>;
|
||||
static PackageResolutionError: Class<PackageResolutionError>;
|
||||
|
||||
constructor(options: Options<TModule, TPackage>) {
|
||||
this._options = options;
|
||||
|
@ -123,31 +123,4 @@ function getResolutionCacheKey(modulePath, depName) {
|
|||
return `${path.resolve(modulePath)}:${depName}`;
|
||||
}
|
||||
|
||||
class PackageResolutionError extends Error {
|
||||
originModulePath: string;
|
||||
packageError: InvalidPackageError;
|
||||
targetModuleName: string;
|
||||
|
||||
constructor(opts: {|
|
||||
+originModulePath: string,
|
||||
+packageError: InvalidPackageError,
|
||||
+targetModuleName: string,
|
||||
|}) {
|
||||
const perr = opts.packageError;
|
||||
super(
|
||||
`While trying to resolve module \`${opts.targetModuleName}\` from file ` +
|
||||
`\`${opts.originModulePath}\`, the package ` +
|
||||
`\`${perr.packageJsonPath}\` was successfully found. However, ` +
|
||||
`this package itself specifies ` +
|
||||
`a \`main\` module field that could not be resolved (` +
|
||||
`\`${perr.mainPrefixPath}\`. Indeed, none of these files exist:\n\n` +
|
||||
` * \`${formatFileCandidates(perr.fileCandidates)}\`\n` +
|
||||
` * \`${formatFileCandidates(perr.indexCandidates)}\``,
|
||||
);
|
||||
Object.assign(this, opts);
|
||||
}
|
||||
}
|
||||
|
||||
ResolutionRequest.PackageResolutionError = PackageResolutionError;
|
||||
|
||||
module.exports = ResolutionRequest;
|
||||
|
|
Loading…
Reference in New Issue