我正在尝试将函数从依赖项导入到我的Next/Reaction函数组件,但不知何故一直收到以下错误:
语法错误:意外的标记‘EXPORT’
这就是我要导入的函数:
export function classes(...args) {
const list = [];
for (let i = 0; i < args.length; i++) {
const entry = args[i];
if (typeof entry === "string") {
list.push(entry);
}
else {
for (let key in entry) {
if (entry[key]) {
list.push(key);
}
}
}
}
return list.join(" ");
上面的classes.js
旁边还有一个classes.d.ts
:
export declare function classes(...args: Array<string | {
[key: string]: any;
}>): string;
从项目内部以相同的方式导出这些代码工作得很好,但当我从node_modules
使用外部库时就不行了。怎么会这样?
阅读了关于next-transpile-module
的文章,但也没能让它与这一版本一起运行。
使导入正常工作的唯一方法是使用相对路径../../node_modules/thedependency/class
-如何使其正常工作?
3条答案
按热度按时间x6492ojm1#
因此NODE_MODULES文件夹中的依赖项使用ES6导入/导出模块导出函数。代码在浏览器中运行时会抛出错误,因为浏览器无法识别ES6模块语法。
原因是,默认情况下,Next.js将Babel-Loader配置为只转换src文件夹中的ES6代码,从node_模块导入的任何ES6代码都将直接进入最终包,而不会转换。
尝试修改
next.config.js
文件中的webpack配置,以使Babel加载程序传递ES6依赖。您可能想要使用这个程序包Next-trspile-MODULESwbgh16ku2#
还有另一种方法:
在https://stackoverflow.com/a/60738624/3051080中找到
上下文:
我收到了相同的错误:
Unexpected token 'export'
;以及为浏览器(客户端)创建的node_modules
依赖项。我尝试了@MarkoCen的答案,但没有成功,因为后来我得到了一个window is not defined
错误。dynamic
方法奏效了。t3irkdon3#
正如您所说的,这是一个js文件,我可以肯定地指出您的问题在下面这一行:
export function classes(...args): string
在函数声明后面有一个类型脚本声明。因此,去掉
: string
部分,就应该没问题了。