未捕获语法错误:意外的“import”标记

3

我正在开发一个React应用程序。我使用webpack和babel loader。在我的React应用程序中,我多次使用import语句,这很正常。

现在我有另一个独立的应用程序,它也很好用。现在我正在使用npm将我的独立应用程序安装在React应用程序中。所以我执行以下操作:

let standAloneApplication =  require("my_stand_alone_application")

但是我在standAloneApplication中遇到了导入错误。 在这里,我有一行代码import controller from "./controller" // Main.js:1Uncaught SyntaxError: 意外的令牌import。

而在React应用程序中,导入语句正常工作。 单独运行的应用程序也运行良好。 但是在一起使用时,它会给出SyntaxError。

我的webpack文件

var webpack = require('webpack');
var path = require('path');

var BUILD_DIR = path.resolve(__dirname, 'html');
var APP_DIR = path.resolve(__dirname, 'html');

var config = {
  entry: APP_DIR + '/app.js',
  output: {
    path: BUILD_DIR,
    filename: 'bundle.js'
  },
   devtool: "source-map",
   node: {
     fs: "empty"
   } ,
      module : {
    loaders : [
      {
        test : /\.js?/,
        include : APP_DIR,
        exclude: /node_modules/,
        loaders: ['babel?presets[]=react,presets[]=es2015,plugins[]=transform-decorators-legacy,plugins[]=transform-class-properties,plugins[]=transform-export-extensions'],
      },

      { test: /\.json$/, loader: "json" }
    ]
  }
}

module.exports = config;

来自独立应用程序的main.js代码

import {Controller} from "./Controller/index.js"

export class Main () {

} 

你能否尝试使用以下内容的 .babelrc 文件: { "presets": ["es2015", "react"] }, 我认为你的 path.resolve 不应该是 'htlm'。 - Alessander França
import {Controller} from "./Controller/index.js" 后面不应该加上 ; 吗?(只是好奇) - David R
如果 es2015 正确运行,则分号是可选的。 - Alessander França
1
@DavidR;并不是必须的。@Alessander França当我移除独立应用程序的require时,它可以很好地工作。我在别的地方使用了多次导入。.babelrc文件在node模块和react应用程序根目录内都可用。 - Ashisha Nautiyal
1个回答

4

注意在你的加载器设置中exclude: /node_modules/

由于你使用npm安装应用程序/模块,它位于该目录中,并且由于排除的原因,它不会被Babel转译。

也许,但我不确定,您可以将其明确添加到include行中:

include : [
  APP_DIR,
  path.resolve(__dirname, 'node_modules/my_stand_alone_application')
]

运行得非常顺畅。 - Ashisha Nautiyal
这对我也起作用,但更好的解决方案是在我的库(或Ashisha的独立应用程序)上设置并运行构建,其中包括使用Babel编译es6。然后,“dist”版本将准备好供使用,就像任何其他npm软件包一样。 - seanTcoyote

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