Путь к узлу выводит другое значение на Linux и windows - PullRequest
0 голосов
/ 25 мая 2020

В webpack, когда вы устанавливаете target равным node и устанавливаете node.option.dirname в false, он будет генерировать stati c значение для __dirname, принимающее значение во время компиляции:

Например, если __dirname использовалось в build / routes. js, я буду установлен:

const __dirameGenerated = "build\\routes"
path.join(__dirameGenerated,'/../../../client/dist/somepath')

Однако приведенный выше код не будет выводить то же самое для каждой ОС.

на windows,

> '..\\client\\dist\\somepath'

на Linux,

> '../../client/dist/somepath'

Как сделать так, чтобы path.join всегда выводил одно и то же значение независимо от операционной системы системы?

Ответы [ 3 ]

0 голосов
/ 25 мая 2020

Используйте path.resolve для обхода файловой системы

Использование path.resolve позволяет вам перемещаться по файловой системе, но поддерживать кроссплатформенную совместимость. Согласно документации, вы можете представить это как серию команд cd, которые выводят в конце единственный путь.

path.resolve('../', '/../', '../')
// '/home' on Linux
// '/Users' on OSX
// 'C:\\Users' on Windows
0 голосов
/ 26 мая 2020

Как написано выше, используйте path.resolve, но также переключитесь на WSL Ubuntu в Windows10 для повышения производительности сборки и совместимости. Используйте его в новом Windows Терминале, это круто.

0 голосов
/ 25 мая 2020

вы должны использовать утилиту path.separator в этом случае, если вы хотите получить тот же результат, но path.join должен обрабатывать идеально кроссплатформенные вещи

...