зеркало из https://github.com/electron/electron.git
fix: app.getAppPath() returning default-app path for files or directories without package.json (#18763)
This commit is contained in:
Родитель
7201845894
Коммит
79f0c444fd
|
@ -85,6 +85,7 @@ function loadApplicationPackage (packagePath: string) {
|
||||||
// Override app name and version.
|
// Override app name and version.
|
||||||
packagePath = path.resolve(packagePath)
|
packagePath = path.resolve(packagePath)
|
||||||
const packageJsonPath = path.join(packagePath, 'package.json')
|
const packageJsonPath = path.join(packagePath, 'package.json')
|
||||||
|
let appPath
|
||||||
if (fs.existsSync(packageJsonPath)) {
|
if (fs.existsSync(packageJsonPath)) {
|
||||||
let packageJson
|
let packageJson
|
||||||
try {
|
try {
|
||||||
|
@ -102,11 +103,12 @@ function loadApplicationPackage (packagePath: string) {
|
||||||
} else if (packageJson.name) {
|
} else if (packageJson.name) {
|
||||||
app.name = packageJson.name
|
app.name = packageJson.name
|
||||||
}
|
}
|
||||||
app._setDefaultAppPaths(packagePath)
|
appPath = packagePath
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Module._resolveFilename(packagePath, module, true)
|
const filePath = Module._resolveFilename(packagePath, module, true)
|
||||||
|
app._setDefaultAppPaths(appPath || path.dirname(filePath))
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
showErrorMessage(`Unable to find Electron app at ${packagePath}\n\n${e.message}`)
|
showErrorMessage(`Unable to find Electron app at ${packagePath}\n\n${e.message}`)
|
||||||
return
|
return
|
||||||
|
|
|
@ -645,6 +645,28 @@ describe('app module', () => {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('getAppPath', () => {
|
||||||
|
it('works for directories with package.json', async () => {
|
||||||
|
const { appPath } = await runTestApp('app-path')
|
||||||
|
expect(appPath).to.equal(path.resolve(fixturesPath, 'api/app-path'))
|
||||||
|
})
|
||||||
|
|
||||||
|
it('works for directories with index.js', async () => {
|
||||||
|
const { appPath } = await runTestApp('app-path/lib')
|
||||||
|
expect(appPath).to.equal(path.resolve(fixturesPath, 'api/app-path/lib'))
|
||||||
|
})
|
||||||
|
|
||||||
|
it('works for files without extension', async () => {
|
||||||
|
const { appPath } = await runTestApp('app-path/lib/index')
|
||||||
|
expect(appPath).to.equal(path.resolve(fixturesPath, 'api/app-path/lib'))
|
||||||
|
})
|
||||||
|
|
||||||
|
it('works for files', async () => {
|
||||||
|
const { appPath } = await runTestApp('app-path/lib/index.js')
|
||||||
|
expect(appPath).to.equal(path.resolve(fixturesPath, 'api/app-path/lib'))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe('getPath(name)', () => {
|
describe('getPath(name)', () => {
|
||||||
it('returns paths that exist', () => {
|
it('returns paths that exist', () => {
|
||||||
const paths = [
|
const paths = [
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
const { app } = require('electron')
|
||||||
|
|
||||||
|
const payload = {
|
||||||
|
appPath: app.getAppPath()
|
||||||
|
}
|
||||||
|
|
||||||
|
process.stdout.write(JSON.stringify(payload))
|
||||||
|
process.stdout.end()
|
||||||
|
|
||||||
|
process.exit()
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"name": "app-path",
|
||||||
|
"main": "lib/index.js"
|
||||||
|
}
|
Загрузка…
Ссылка в новой задаче