Я создаю приложение Next.js с помощью Базель. Работает нормально, но есть одна проблема:
Когда я импортирую styles/globals.css
в pages/_app.tsx
, Next.js выдает эту ошибку:
Global CSS cannot be imported from files other than your Custom <App>. Please move all global CSS imports to pages/_app.js. Or convert the import to Component-Level CSS (CSS Modules).
Read more: https://err.sh/next.js/css-global
Location: pages/_app.tsx
Что, очевидно, не имеет смысла.
yarn install
yarn start:bazel
(http: // localhost: 3000, отлично работает)yarn start:bazel
(Ошибка при сборке)После предложения Ульрих Томас Габор выясняется, что ctx.customAppFile - это null
, что может быть корнем проблемы.
Вот журнал вывода ctx
при сборке с помощью Bazel:
{
ctx: {
rootDirectory: '/home/flo/.cache/bazel/_bazel_flo/e959037946bf226f3b911fa40ec62d93/sandbox/linux-sandbox/85/execroot/nextjs-bazel/bazel-out/k8-fastbuild/bin',
customAppFile: null,
// ...
}
}
После некоторой отладки я обнаружил проблему:
Этот если заявление не работает из-за этой ошибки
Error: EACCES: permission denied, access '/home/flo/.cache/bazel/_bazel_flo/e959037946bf226f3b911fa40ec62d93/sandbox/linux-sandbox/186/execroot/nextjs-bazel/bazel-out/k8-fastbuild/bin/pages/_app.tsx'
Если я исправлю Next.js, чтобы игнорировать эту ошибку, все будет работать нормально!
Но как предотвратить ошибку EACCES
?
Да, я импортирую только глобальные стили в pages/_app
. И нет никаких проблем с CSS на уровне компонентов. Возможно, мне стоит упомянуть, что сборка изначально, при запуске next build
работает нормально. Проблема возникает только при сборке под Bazel
Хм. Похоже, что что если не работает. Может быть, попробуйте отладить, если customAppFile
передается правильно и каково его содержимое.
Вы правы, ctx.customAppFile
- это null
. Теперь вопрос в том, почему
Кажется, установлена переменная здесь. Может, ты сможешь узнать, что там происходит? Все, что передается в дальше вниз тогда, - это то, что вы должны увидеть в css/index.ts
. Если все это кажется правильным (или неправильным - как бы это ни было видно), то следующим шагом будет продолжение пути в nodejs-правила, я думаю ..
Я нашел проблему (см. Отредактированный ответ). Вы хоть представляете, почему это происходит?
Абсолютно без понятия. Я думаю, поскольку у вас есть минимальный (неработающий) пример и сообщение об ошибке, сейчас самое время открыть там проблему с Github.
Вы читали предоставленная ссылка и последующая ссылка?