vercel 中的 nextjs 不支持 Optional Chaining 吗?
Doesn't nextjs in vercel support Optional Chaining?
我看到 nextjs 确实支持可选链接 here 但是,我一直在尝试部署这段代码
module.exports = {
experimental: {
outputStandalone: true,
},
images: {
domains: process.env.NEXT_PUBLIC_IMAGE_DOMAINS?.split(",")
?.filter((d) => d.trim())
?.map((d) => d.trim()),
},
reactStrictMode: false,
webpack(config) {
config.module.rules.push({
test: /\.svg$/,
use: [
"@svgr/webpack",
{
loader: "svg-url-loader",
options: {},
},
],
});
return config;
},
};
但它在 vercel 上失败并出现错误
> Build error occurred
/vercel/path0/next.config.js:6
domains: process.env.NEXT_PUBLIC_IMAGE_DOMAINS?.split(",")
SyntaxError: Unexpected token '.'
at wrapSafe (internal/modules/cjs/loader.js:915:16)
at Module._compile (internal/modules/cjs/loader.js:963:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at ModuleWrap.<anonymous> (internal/modules/esm/translators.js:195:29)
at ModuleJob.run (internal/modules/esm/module_job.js:145:37)
at async Loader.import (internal/modules/esm/loader.js:182:24)
at async Object.loadConfig [as default] (/vercel/path0/node_modules/next/dist/server/config.js:448:36)
at async Span.traceAsyncFn (/vercel/path0/node_modules/next/dist/trace/trace.js:75:20)
error Command failed with exit code 1.
知道为什么吗?
问题是您假设 process.env
是标准 javascript 对象。
但是,process.env 不是标准的 javascript 对象。接下来js将process.env.*
替换为构建时对应的值。因此,您不能像 javascript 对象那样对其进行解构,也不能在其上使用 split
等属性。
参考 Next js 文档,特别是这个 section。
问题是用于构建应用程序的节点版本 (12) 错误。
我看到 nextjs 确实支持可选链接 here 但是,我一直在尝试部署这段代码
module.exports = {
experimental: {
outputStandalone: true,
},
images: {
domains: process.env.NEXT_PUBLIC_IMAGE_DOMAINS?.split(",")
?.filter((d) => d.trim())
?.map((d) => d.trim()),
},
reactStrictMode: false,
webpack(config) {
config.module.rules.push({
test: /\.svg$/,
use: [
"@svgr/webpack",
{
loader: "svg-url-loader",
options: {},
},
],
});
return config;
},
};
但它在 vercel 上失败并出现错误
> Build error occurred
/vercel/path0/next.config.js:6
domains: process.env.NEXT_PUBLIC_IMAGE_DOMAINS?.split(",")
SyntaxError: Unexpected token '.'
at wrapSafe (internal/modules/cjs/loader.js:915:16)
at Module._compile (internal/modules/cjs/loader.js:963:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at ModuleWrap.<anonymous> (internal/modules/esm/translators.js:195:29)
at ModuleJob.run (internal/modules/esm/module_job.js:145:37)
at async Loader.import (internal/modules/esm/loader.js:182:24)
at async Object.loadConfig [as default] (/vercel/path0/node_modules/next/dist/server/config.js:448:36)
at async Span.traceAsyncFn (/vercel/path0/node_modules/next/dist/trace/trace.js:75:20)
error Command failed with exit code 1.
知道为什么吗?
问题是您假设 process.env
是标准 javascript 对象。
但是,process.env 不是标准的 javascript 对象。接下来js将process.env.*
替换为构建时对应的值。因此,您不能像 javascript 对象那样对其进行解构,也不能在其上使用 split
等属性。
参考 Next js 文档,特别是这个 section。
问题是用于构建应用程序的节点版本 (12) 错误。