Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[bug] Undeclared identifier when exporting namespace from a dynamic import. #4490

Closed
manucorporat opened this issue May 6, 2022 · 4 comments · Fixed by #4499
Closed

[bug] Undeclared identifier when exporting namespace from a dynamic import. #4490

manucorporat opened this issue May 6, 2022 · 4 comments · Fixed by #4499

Comments

@manucorporat
Copy link
Contributor

manucorporat commented May 6, 2022

Rollup Version

2.72.0

Operating System (or Browser)

Any

Node Version (if applicable)

No response

Link To Reproduction

https://rollupjs.org/repl/?version=2.72.0&shareable=JTdCJTIybW9kdWxlcyUyMiUzQSU1QiU3QiUyMm5hbWUlMjIlM0ElMjJtYWluLmpzJTIyJTJDJTIyY29kZSUyMiUzQSUyMmltcG9ydCUyMCU3QlBhZ2UlN0QlMjBmcm9tJTIwJy4lMkZwYWdlLmpzJyU1Q25QYWdlKCklM0IlNUNuJTIyJTJDJTIyaXNFbnRyeSUyMiUzQXRydWUlN0QlMkMlN0IlMjJuYW1lJTIyJTNBJTIycGFnZV9ob29rLmpzJTIyJTJDJTIyY29kZSUyMiUzQSUyMmltcG9ydCUyMCU3QlRoaW5nJTdEJTIwZnJvbSUyMCcuJTJGdGhpbmcuanMnJTNCJTVDbmltcG9ydCUyMCU3QnNldEhlYWRNZXRhJTdEJTIwZnJvbSUyMCcuJTJGcXdpay1jaXR5LmpzJyUzQiU1Q24lNUNuZXhwb3J0JTIwY29uc3QlMjBQYWdlJTIwJTNEJTIwKCklMjAlM0QlM0UlMjAlN0IlNUNuJTVDdGNvbnNvbGUubG9nKCd0aGluZycpJTNCJTVDbiU1Q3RzZXRIZWFkTWV0YSgpJTNCJTVDbiU1Q3RUaGluZygpJTNCJTVDbiU3RCU1Q24lNUNuJTVDbmV4cG9ydCUyMCU3QmhhbmRsZVdhdGNoJTdEJTIwZnJvbSUyMCcuJTJGY29yZS5qcyclM0IlMjIlMkMlMjJpc0VudHJ5JTIyJTNBZmFsc2UlN0QlMkMlN0IlMjJuYW1lJTIyJTNBJTIyY29yZS5qcyUyMiUyQyUyMmNvZGUlMjIlM0ElMjJleHBvcnQlMjBjb25zdCUyMGhhbmRsZVdhdGNoJTIwJTNEJTIwKCklMjAlM0QlM0UlMjAlN0IlNUNuJTVDdCU1Q3Rjb25zb2xlLmxvZygnaGFuZGxlV2F0Y2gnKSUzQiU1Q24lN0QlNUNuJTVDbmV4cG9ydCUyMGNvbnN0JTIwY29tcG9uZW50JTIwJTNEJTIwKHByb3ApJTIwJTNEJTNFJTIwJTdCJTVDbiU1Q3QlNUN0Y29uc29sZS5sb2coJ2hhbmRsZVdhdGNoJyUyQyUyMHByb3ApJTNCJTVDbiU3RCUyMiUyQyUyMmlzRW50cnklMjIlM0FmYWxzZSU3RCUyQyU3QiUyMm5hbWUlMjIlM0ElMjJwYWdlLmpzJTIyJTJDJTIyY29kZSUyMiUzQSUyMmltcG9ydCUyMCU3QmNvbXBvbmVudCU3RCUyMGZyb20lMjAnLiUyRmNvcmUuanMnJTNCJTVDbmV4cG9ydCUyMGNvbnN0JTIwUGFnZSUyMCUzRCUyMGNvbXBvbmVudCgoKSUyMCUzRCUzRSUyMGltcG9ydCgnLiUyRnBhZ2VfaG9vay5qcycpKSU1Q24lMjIlN0QlMkMlN0IlMjJuYW1lJTIyJTNBJTIydGhpbmdfaG9vay5qcyUyMiUyQyUyMmNvZGUlMjIlM0ElMjJpbXBvcnQlMjAlN0JzZXRIZWFkTWV0YSU3RCUyMGZyb20lMjAnLiUyRnF3aWstY2l0eS5qcyclM0IlNUNuJTVDbmV4cG9ydCUyMGNvbnN0JTIwUGFnZSUyMCUzRCUyMCgpJTIwJTNEJTNFJTIwJTdCJTVDbiU1Q3Rjb25zb2xlLmxvZygndGhpbmcnKSUzQiU1Q24lNUN0c2V0SGVhZE1ldGEoKSUzQiU1Q24lN0QlNUNuJTVDbmV4cG9ydCUyMCU3QmhhbmRsZVdhdGNoJTdEJTIwZnJvbSUyMCcuJTJGY29yZS5qcyclM0IlMjIlN0QlMkMlN0IlMjJuYW1lJTIyJTNBJTIydGhpbmcuanMlMjIlMkMlMjJjb2RlJTIyJTNBJTIyZXhwb3J0JTIwY29uc3QlMjBUaGluZyUyMCUzRCUyMGNvbXBvbmVudCgoKSUyMCUzRCUzRSUyMGltcG9ydCgnLiUyRnRoaW5nX2hvb2suanMnKSklNUNuJTIyJTdEJTJDJTdCJTIybmFtZSUyMiUzQSUyMnF3aWstY2l0eS5qcyUyMiUyQyUyMmNvZGUlMjIlM0ElMjJleHBvcnQlMjBjb25zdCUyMHNldEhlYWRNZXRhJTIwJTNEJTIwKCklMjAlM0QlM0UlMjAlN0IlNUNuJTVDdGNvbnNvbGUubG9nKCcnKSUzQiU1Q24lN0QlNUNuJTIyJTdEJTVEJTJDJTIyb3B0aW9ucyUyMiUzQSU3QiUyMmZvcm1hdCUyMiUzQSUyMmNqcyUyMiUyQyUyMm5hbWUlMjIlM0ElMjJteUJ1bmRsZSUyMiUyQyUyMmFtZCUyMiUzQSU3QiUyMmlkJTIyJTNBJTIyJTIyJTdEJTJDJTIyZ2xvYmFscyUyMiUzQSU3QiU3RCU3RCUyQyUyMmV4YW1wbGUlMjIlM0FudWxsJTdE

Expected Behaviour

Notice the generated output:

'use strict';

require('./main-720c2d2f.js');

const Thing = component(() => Promise.resolve().then(function () { return require('./thing_hook-4002d912.js'); }));

const setHeadMeta = () => {
	console.log('');
};

const Page = () => {
	console.log('thing');
	setHeadMeta();
	Thing();
};

var page_hook = /*#__PURE__*/Object.freeze({
	__proto__: null,
	Page: Page,
	handleWatch: handleWatch
});

exports.page_hook = page_hook;
exports.setHeadMeta = setHeadMeta;

When generating the page_hook namespace object:

	handleWatch: handleWatch

The identifier handleWatch is not defined!

Actual Behaviour

Rollup should not generated broken code, pointing to undefined identifiers.

@manucorporat
Copy link
Contributor Author

@lukastaegert is it a confirmed issue? or am i missing something?

@lukastaegert
Copy link
Member

Sorry, missed this one. This looks indeed broken, let me see what I can find out.

@lukastaegert
Copy link
Member

lukastaegert commented May 18, 2022

For symmetry, component is also not defined in all places where it is used no, that was just a missing import. It seems to be an issue that occurs when Rollup puts other things into a dynamic chunk that are not part of the chunk namespace. Will dig further.

Here is a slight simplification of the issue, but at its core, it seems you need a chain of at least two dynamic imports and a file that is shared between the first and second dynamic import target to trigger: https://rollupjs.org/repl/?version=2.72.0&shareable=JTdCJTIybW9kdWxlcyUyMiUzQSU1QiU3QiUyMm5hbWUlMjIlM0ElMjJtYWluLmpzJTIyJTJDJTIyY29kZSUyMiUzQSUyMmltcG9ydCUyMCU3QnNoYXJlZCU3RCUyMGZyb20lMjAnLiUyRnNoYXJlZC5qcyclM0IlNUNuaW1wb3J0KCcuJTJGZHluYW1pYzEuanMnKSU1Q25jb25zb2xlLmxvZyhzaGFyZWQpJTNCJTVDbiU1Q24lMjIlMkMlMjJpc0VudHJ5JTIyJTNBdHJ1ZSU3RCUyQyU3QiUyMm5hbWUlMjIlM0ElMjJkeW5hbWljMS5qcyUyMiUyQyUyMmNvZGUlMjIlM0ElMjJpbXBvcnQlMjAlN0JzaGFyZWREeW5hbWljJTdEJTIwZnJvbSUyMCcuJTJGc2hhcmVkRHluYW1pYy5qcyclM0IlNUNuZXhwb3J0JTIwJTdCc2hhcmVkJTdEJTIwZnJvbSUyMCcuJTJGc2hhcmVkLmpzJyUzQiU1Q24lNUNuaW1wb3J0KCcuJTJGZHluYW1pYzIuanMnKSU1Q24lNUNuY29uc29sZS5sb2coc2hhcmVkRHluYW1pYyklM0IlMjIlMkMlMjJpc0VudHJ5JTIyJTNBZmFsc2UlN0QlMkMlN0IlMjJuYW1lJTIyJTNBJTIyc2hhcmVkLmpzJTIyJTJDJTIyY29kZSUyMiUzQSUyMmV4cG9ydCUyMGNvbnN0JTIwc2hhcmVkJTIwJTNEJTIwdHJ1ZSUzQiUyMiUyQyUyMmlzRW50cnklMjIlM0FmYWxzZSU3RCUyQyU3QiUyMm5hbWUlMjIlM0ElMjJkeW5hbWljMi5qcyUyMiUyQyUyMmNvZGUlMjIlM0ElMjJpbXBvcnQlMjAlN0JzaGFyZWREeW5hbWljJTdEJTIwZnJvbSUyMCcuJTJGc2hhcmVkRHluYW1pYy5qcyclM0IlNUNuJTVDbmNvbnNvbGUubG9nKHNoYXJlZER5bmFtaWMpJTNCJTIyJTdEJTJDJTdCJTIybmFtZSUyMiUzQSUyMnNoYXJlZER5bmFtaWMuanMlMjIlMkMlMjJjb2RlJTIyJTNBJTIyZXhwb3J0JTIwY29uc3QlMjBzaGFyZWREeW5hbWljJTIwJTNEJTIwdHJ1ZSUzQiU1Q24lMjIlN0QlNUQlMkMlMjJvcHRpb25zJTIyJTNBJTdCJTIyZm9ybWF0JTIyJTNBJTIyY2pzJTIyJTJDJTIybmFtZSUyMiUzQSUyMm15QnVuZGxlJTIyJTJDJTIyYW1kJTIyJTNBJTdCJTIyaWQlMjIlM0ElMjIlMjIlN0QlMkMlMjJnbG9iYWxzJTIyJTNBJTdCJTdEJTdEJTJDJTIyZXhhbXBsZSUyMiUzQW51bGwlN0Q=

@lukastaegert
Copy link
Member

Fix at #4499

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants