You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在ASP.NET Core 2.0 React(TypeScript)项目中配置Rollup遇toASCII导出错误

解决Rollup中'toASCII' is not exported by punycode.js的错误

这个错误的核心原因很明确:rollup-plugin-node-builtins里的url.js尝试从punycode包导入命名导出的toASCII,但实际上punycode是通过默认导出整个模块的,并没有暴露单独的toASCII命名导出,所以Rollup找不到这个导出项。

结合你的配置,我整理了几个可行的修复步骤:

1. 在commonjs插件中手动映射punycode的命名导出

Rollup的commonjs插件允许我们手动指定CommonJS模块的命名导出映射,针对punycode,我们可以把它的方法映射成Rollup能识别的命名导出。修改你的commonjs配置,在namedExports里添加:

'node_modules/punycode/punycode.js': ['toASCII', 'toUnicode']

2. 移除重复的resolve插件

你的配置里同时引入了resolve()和nodeResolve({...}),这两个其实是同一个插件(rollup-plugin-node-resolve),重复引入可能导致不必要的冲突,建议只保留带有配置项的那一个,删掉单独的resolve()。

3. 修正external配置的模块名大小写

你当前的external里写的是'React'、'ReactDOM',但Node.js的模块名是区分大小写的,实际的包名是小写的react、react-dom,修正后能避免Rollup误判这些模块为外部依赖。

修改后的完整rollup.config.js

import typescript from 'rollup-plugin-typescript2';
import lessModules from 'rollup-plugin-less-modules';
import nodeResolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import json from 'rollup-plugin-json';
import builtins from 'rollup-plugin-node-builtins';
import globals from 'rollup-plugin-node-globals';

export default {
 plugins: [
 typescript(),
 nodeResolve({ jsnext: true, main: true, browser: true }),
 commonjs({
 include: [ 'node_modules/**' ],
 exclude: [ 'node_modules/process-es6/**' ],
 namedExports: {
 'node_modules/react/react.js': ['Children', 'Component', 'PropTypes', 'createElement'],
 'node_modules/react-dom/index.js': ['render'],
 'node_modules/punycode/punycode.js': ['toASCII', 'toUnicode']
 }
 }),
 builtins(),
 globals(),
 json(),
 lessModules({output: true})
 ],
 input: './ClientApp/boot.tsx',
 output: {
 file: './wwwroot/dist/bundle.js',
 format: 'iife'
 },
 external: [ 'react', 'react-dom', 'react-router-dom' ],
 sourceMap: true
}

做完这些修改后,再运行rollup -c应该就能解决这个导出错误了。另外你已经手动安装过punycode,这步没问题,不需要再重复安装。

内容的提问来源于stack exchange,提问作者Dmitrij Polyanin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:02:04