我在尝试yarn dev
我的Nextjs项目时得到了Unexpected token 'export'
。下面是我得到的错误消息(运行yarn build
后)。
> Build error occurred
/Users/.../my-repo/node_modules/next/server.js:1
export { NextRequest } from 'next/dist/server/web/spec-extension/request'
^^^^^^
SyntaxError: Unexpected token 'export'
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1031:15)
at Module._compile (node:internal/modules/cjs/loader:1065:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (/Users/.../my-repo/node_modules/@clerk/nextjs/dist/server/utils.js:5:18)
at Module._compile (node:internal/modules/cjs/loader:1101:14) {
type: 'SyntaxError'
}
这是node_modules/next/server.js
在我的项目中的样子。
export { NextRequest } from 'next/dist/server/web/spec-extension/request'
export { NextResponse } from 'next/dist/server/web/spec-extension/response'
另外,下面是next.config.js
:
/** @type {import('next').NextConfig} */
const nextConfig = {
eslint: {
dirs: ["."],
},
poweredByHeader: false,
trailingSlash: true,
basePath: "",
env: {
PROJECT_NAME: process.env.PROJECT_NAME,
},
reactStrictMode: true,
};
const withBundleAnalyzer = require("@next/bundle-analyzer")({
enabled: process.env.ANALYZE === "true",
});
module.exports = withBundleAnalyzer(nextConfig);
我已经尝试过使用next-transpile-modules
,但这没有帮助,作为参考,我正在(并且需要)使用next
的v12.1.0,所以我不能利用v13.1自带的内置transpile支持。
会有什么问题呢?
2条答案
按热度按时间ssgvzors1#
我认为您正在导入一些组件,但您使用了错误的语法!您需要将
export { NextRequest } from 'next/dist/server/web/spec-extension/request'
更改为import { NextRequest } from 'next/dist/server/web/spec-extension/request'
。有关NextJS文档的更多信息,请查看文档。
5lhxktic2#
此问题似乎与您正在使用的Next.js版本有关。错误消息指出“export”关键字是意外的,这表明您安装的Next.js版本不支持使用“export”关键字。
建议将Next.js更新到13.1或更高版本,因为它带有内置的transpile支持。
您也可以尝试使用next-transpile-modules包来传输代码,但是要确保使用的版本与您当前的Next.js版本兼容
另一种选择是使用babel来传递代码,并配置构建过程,以便在构建项目时使用它。