NPM - Browserify:“'import'和'export'只能与'sourceType: module'一起使用”

17

我正在尝试将一个使用Browserify转换为普通Javascript的tensorflow.js文件(使用Node.js编写)。在文件中有两行代码

import * as tf from '@tensorflow/tfjs';
import {MnistData} from './data';

当我导出文件时,出现了错误“ParseError: 'import' and 'export' may appear only with 'sourceType: module'”。 我该如何解决这个错误?

提前致谢, Andi


听起来很愚蠢,但我找到的唯一解决办法是提交所有更改,删除整个项目文件夹除了.git,然后执行git reset --hard - Cadoiz
2个回答

26
更新2023年:由于Browserify已被放弃,转换到esbuild可能更容易一些。
你可以使用esmify来为browserify添加ES模块支持。
browserify index.js -p esmify > bundle.js

请参考项目的自述文件以获取更多使用信息。

1
当我执行此操作时,出现以下错误。 无法从'C:\ Users \ Development \ static \ main \ base \ js'找到模块'esmify'。我已经按照GitHub网站上的说明进行了操作。 - FearlessFuture
2
@FearlessFuture 首先必须安装 esmify:npm install --save-dev esmify - ris8_allo_zen0
1
很抱歉这里没有委婉的说法。但这只是一个巨大问题的冰山一角。即使@ris8_allo_zen0指出你需要在使用答案之前安装某些东西,似乎还缺少更多的依赖关系。鉴于整个“使用javascript包”的事情是一个主要用例,这真的很令人沮丧。 - BitTickler
2
自从发布这个答案以来已经过去了4年,很多事情都发生了变化。现在使用browserify是一个可怕的想法,因为它已经非常过时了。我建议使用vite或esbuild或任何其他在过去一年中有任何提交记录的工具。Browserify基本上已经被放弃了。 - fregante

0

Browserify将模块导出复制并粘贴到您的JavaScript文件中。这个错误只是告诉您,您的语句语法当前不受browserify支持(基本上,无法使用es6+)。

因此,您想要做的第一件事是通过babel运行该文件,将其转换为es2015或browserify需要识别正确的导出语法的任何版本。


什么意思Browserify不支持es6?我有这个简单的代码在模块导出function test() { console.log('teeest'); }它不能更简单了。 - Čamo
1
你需要使用 Babel 将代码转译为 ES5。只需在 Google 上查看 Babel + Browserify 的示例即可。 - user9844377

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接