运行我的反应应用时遇到错误:Uncaught SyntaxError: Unexpected token import
我知道这里有很多类似的问题,但我认为我的情况有点不同。首先,这是存储库,因为我不确定错误的确切位置:repo
我正在使用create-react-app,并且在一个单独的后端目录中我使用babel(带有包含预设es2015的.babelrc文件)。应用程序工作正常,直到我在后端文件夹(/backend/shared/validations/signup.js)的新目录中添加了另一个文件 我之前也在使用es6,它工作得非常好。首先我认为这是Windows的一些问题,但我在我的Ubuntu笔记本电脑上克隆了回购,我在那里得到了同样的错误。
我尝试过的一些事情:
所以无论文件在哪里,错误都保持不变。如果我删除整个文件及其所有引用,该应用程序将再次运行。
我认为这个错误非常奇怪,考虑到我在应用程序中的其他地方使用es6没有遇到任何麻烦。如果有人能帮我解决这个错误,那将会很棒。
编辑:如果你想在你自己的机器上测试它,只需克隆repo并在根文件夹中运行npm start
(以及后端文件夹中的npm start
,但这不是应用程序运行或出现错误所必需的。
答案 0 :(得分:0)
这就是发生的事情:
您的webpack设置为仅在src
文件夹(include
指令)中运行babel加载程序。
要改变这种情况,一种方法是:
1)使用npm run eject
解压缩webpack配置(不知道是否有其他方法可以覆盖react-create-app
中的设置)。来自文档:
运行npm run eject会复制所有配置文件和 传递依赖(Webpack,Babel,ESLint等)直接进入你的 项目,所以你可以完全控制它们。
config/paths.js
中的 2),添加appShared
密钥,如下:
module.exports = {
/* ... */
appSrc: resolveApp('src'),
appShared: resolveApp('backend/shared'),
/* ... */
};
config/webpack.config.dev.js
中的3),添加babel加载程序的路径,如下所示:
{
test: /\.(js|jsx)$/,
include: [ paths.appSrc, paths.appShared ],
loader: 'babel',
/* ... */
},
现在有效!