Does not work if dynamic import path is a template literal
Opened this issue · 0 comments
CxRes commented
If one has a dynamic import statement of the form:
import(`/path/to/${file}`, { assert: { type: 'json' } })
rollup crashes with error:
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
at validateString (internal/validators.js:124:11)
at Object.resolve (path.js:162:9)
at getImportPath (file:///D:/dev/Proto/syntropize70c/packages/apis/resource/node_modules/.pnpm/rollup-plugin-import-assert@1.1.2_acorn-import-assertions@1.7.6/node_modules/rollup-plugin-import-assert/dist/import-assert.js:25:44)
at file:///D:/dev/Proto/syntropize70c/packages/apis/resource/node_modules/.pnpm/rollup-plugin-import-assert@1.1.2_acorn-import-assertions@1.7.6/node_modules/rollup-plugin-import-assert/dist/import-assert.js:48:40
at Array.forEach (<anonymous>)
at Object.transform (file:///D:/dev/Proto/syntropize70c/packages/apis/resource/node_modules/.pnpm/rollup-plugin-import-assert@1.1.2_acorn-import-assertions@1.7.6/node_modules/rollup-plugin-import-assert/dist/import-assert.js:47:35)
at file:///D:/dev/Proto/syntropize70c/node_modules/.pnpm/rollup@2.56.2/node_modules/rollup/dist/es/shared/rollup.js:20117:25
at runNextTicks (internal/process/task_queues.js:60:5)
at processImmediate (internal/timers.js:437:9) {
code: 'PLUGIN_ERROR',
pluginCode: 'ERR_INVALID_ARG_TYPE',
plugin: 'rollup-plugin-import-assert',
hook: 'transform',
id: 'D:\\dev\\Proto\\syntropize70c\\packages\\apis\\resource\\src\\schema\\fetch.js',
watchFiles: [...]
Looking into the code, I find that the second argument to getImportPath()
is node.source.value
which assumes the path to be a value; whereas the template literal leads to a tree no value
property. I believe fixing this should resolve the issue.. Actually, any dynamic statement should just be left alone (except for appropriate modification of variable names, if import path is an expression).