Javascript 如何在节点中使用导入的ES6模块运行文件
我有一个用webpack设置的react应用程序,还希望有一个在node中运行的脚本,用于将内容写入输出文件,例如: script.mjsJavascript 如何在节点中使用导入的ES6模块运行文件,javascript,node.js,ecmascript-6,babeljs,Javascript,Node.js,Ecmascript 6,Babeljs,我有一个用webpack设置的react应用程序,还希望有一个在node中运行的脚本,用于将内容写入输出文件,例如: script.mjs import fs from 'fs'; import {SomeClass} from './index.js'; const outputFile= fs.createWriteStream(__dirname + '/output.png'); // Writes into output file 并在package.json中使用以下脚本命令:
import fs from 'fs';
import {SomeClass} from './index.js';
const outputFile= fs.createWriteStream(__dirname + '/output.png');
// Writes into output file
并在package.json
中使用以下脚本命令:
"scripts": {
...
"runFile": "node --experimental-modules test/script.mjs",
...
}
每当我运行npm run runFile
时,它都会抱怨:
import {SomeClass} from './index.js';
^^^^^^^^^
SyntaxError: The requested module './index.js' does not provide an export named 'SomeClass'
即使它存在于该文件中:
/index.js
import fs from 'fs';
import {SomeClass} from './index.js';
const outputFile= fs.createWriteStream(__dirname + '/output.png');
// Writes into output file
从“/SomeClass”导出SomeClass代码>
我甚至使用了node-r esm test/script.js
在node中运行,但它一直在抱怨ES6exports
。有人能告诉我如何使用node
命令运行一个包含ES6内容的js文件吗
节点v10您的导出/导入语句中有一点不一致
哦,你是从一个完全不同的文件导出的。你有理由这样做吗
您可以导出包含类的
export { someClass
然后可以使用当前的导入语句导入它
更直接的方法是使用默认导出从/someClass
文件导出
export default someClass
然后在不分解对象的情况下导入它:
import some class from './someClass';
后者非常适合文件名,是大多数人所期望的样式
请注意,运行旧节点版本时,需要一些额外的CLI标志来运行模块。对于当前节点(^13),设置类型:模块就足够了。请看吴浩的回答。您的导出/导入语句中有一点不一致
哦,你是从一个完全不同的文件导出的。你有理由这样做吗
您可以导出包含类的
export { someClass
然后可以使用当前的导入语句导入它
更直接的方法是使用默认导出从/someClass
文件导出
export default someClass
然后在不分解对象的情况下导入它:
import some class from './someClass';
后者非常适合文件名,是大多数人所期望的样式
请注意,运行旧节点版本时,需要一些额外的CLI标志来运行模块。对于当前节点(^13),设置类型:模块就足够了。见吴浩的答案。你的节点版本是什么?这不应该是^V13的问题。它是节点版本10。您的节点版本是什么?这不应该是^v13的问题,它是节点版本10