SyntaxError: Cannot use import statement outside a module while using `fast-image-zoom`
SyntaxError: Cannot use import statement outside a module while using `fast-image-zoom`
我正在尝试在我的 React/Next.js 应用程序中使用 fast-image-zoom,但出现以下错误:
SyntaxError: Cannot use import statement outside a module
at Object.compileFunction (node:vm:353:18)
at wrapSafe (node:internal/modules/cjs/loader:1039:15)
at Module._compile (node:internal/modules/cjs/loader:1073:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
at Module.load (node:internal/modules/cjs/loader:989:32)
at Function.Module._load (node:internal/modules/cjs/loader:829:14)
at Module.require (node:internal/modules/cjs/loader:1013:19)
at require (node:internal/modules/cjs/helpers:93:18)
at Object.fast-image-zoom (my-app\.next\server\pages\_app.js:20969:18)
at __webpack_require__ (my-app\.next\server\webpack-runtime.js:25:42)
my-app\node_modules\fast-image-zoom\src\index.js:1
import styles from './styles'
^^^^^^
我试着按 _app.tsx
中的方式调用它:
import imageZoom from 'fast-image-zoom';
imageZoom();
function MyApp({ Component, pageProps }) {
return <Component {...pageProps} />;
}
export default MyApp;
但是因为它是纯 ESM 模块,所以抛出上述错误。
然后我尝试在 _document.tsx
中使用它,例如:
async componentDidMount() {
dynamic(() => import('fast-image-zoom').then((mod) => mod.imageZoom), { ssr: false })
}
但后来我没有报错,但它不起作用。
我在这里复制了一个 -> https://stackblitz.com/edit/nextjs-edw9pk?file=pages%2F_app.js
您可以取消注释 pages/_app.js
中的两行以查看错误。
我该如何解决?
将您的文件更改为以下内容
_app.js代码
import { useEffect } from 'react';
function MyApp({ Component, pageProps }) {
useEffect(() => {
const loadImageZoom = async () => {
const imageZoom = await import('fast-image-zoom').then(
mod => mod.default
);
imageZoom();
};
loadImageZoom();
}, []);
return <Component {...pageProps} />;
}
export default MyApp;
我正在尝试在我的 React/Next.js 应用程序中使用 fast-image-zoom,但出现以下错误:
SyntaxError: Cannot use import statement outside a module
at Object.compileFunction (node:vm:353:18)
at wrapSafe (node:internal/modules/cjs/loader:1039:15)
at Module._compile (node:internal/modules/cjs/loader:1073:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
at Module.load (node:internal/modules/cjs/loader:989:32)
at Function.Module._load (node:internal/modules/cjs/loader:829:14)
at Module.require (node:internal/modules/cjs/loader:1013:19)
at require (node:internal/modules/cjs/helpers:93:18)
at Object.fast-image-zoom (my-app\.next\server\pages\_app.js:20969:18)
at __webpack_require__ (my-app\.next\server\webpack-runtime.js:25:42)
my-app\node_modules\fast-image-zoom\src\index.js:1
import styles from './styles'
^^^^^^
我试着按 _app.tsx
中的方式调用它:
import imageZoom from 'fast-image-zoom';
imageZoom();
function MyApp({ Component, pageProps }) {
return <Component {...pageProps} />;
}
export default MyApp;
但是因为它是纯 ESM 模块,所以抛出上述错误。
然后我尝试在 _document.tsx
中使用它,例如:
async componentDidMount() {
dynamic(() => import('fast-image-zoom').then((mod) => mod.imageZoom), { ssr: false })
}
但后来我没有报错,但它不起作用。
我在这里复制了一个 -> https://stackblitz.com/edit/nextjs-edw9pk?file=pages%2F_app.js
您可以取消注释 pages/_app.js
中的两行以查看错误。
我该如何解决?
将您的文件更改为以下内容
_app.js代码
import { useEffect } from 'react';
function MyApp({ Component, pageProps }) {
useEffect(() => {
const loadImageZoom = async () => {
const imageZoom = await import('fast-image-zoom').then(
mod => mod.default
);
imageZoom();
};
loadImageZoom();
}, []);
return <Component {...pageProps} />;
}
export default MyApp;