小编典典

语法错误:意外令牌:punc())

reactjs

我收到:

语法错误:意外的令牌: 来自UglifyJS的 punc())

它指向全局变量的第一个字母API_URL。我以这种方式实现:

export default reduxApi({
  campaigns: {
    url: `${API_URL}/api/v1/whatever`,
    transformer (response) {
      if (!response) return {}
      return response.data
    }
  } 
}).use('fetch', adapterFetch(fetch)).use('options', {
  headers: getRequestHeaders()
})

如果我删除键下的全局变量url

export default reduxApi({
  campaigns: {
    url: `/api/v1/whatever`,
    transformer (response) {
      if (!response) return {}
      return response.data
    }
  } 
}).use('fetch', adapterFetch(fetch)).use('options', {
  headers: getRequestHeaders()
})

然后一切正常。有任何想法吗?为什么uglify会引发此类错误?


阅读 343

收藏
2020-07-22

共1个答案

小编典典

我决定在这里写一个解决方案。我不必安装其他uglify- js软件包版本。关键是要以适当的方式解决对对象的导入。就我而言,这API_URL是一个全局变量。因此,Uglify不确定是否已定义它,这就是它引发错误的原因。

为了解决该问题,我以这种方式使用了webpack外部组件

// ------------------------------------                                                                                               
// Externals
// ------------------------------------
webpackConfig.externals = {
  config: JSON.stringify(require(`./${__DEV__ ? 'development' : 'production'}.json`)),                                                
}

只是config根据环境(developmentproduction)将JSON配置对象放入变量中。所有你需要做的就是把development.jsonproduction.json位置旁边的定义文件webpackConfig.externals

然后按照我的情况,您定义它development.json

{
  "apiUrl": "http://localhost:5000"
}

然后最后在您的代码中:

... // other imports
import config from "config"

export default reduxApi({
  campaigns: {
    url: `${config.apiUrl}/api/v1/whatever`,
    transformer (response) {
      if (!response) return {}
      return response.data
    }
  } 
}).use('fetch', adapterFetch(fetch)).use('options', {
  headers: getRequestHeaders()
})

它就像一个魅力。

希望能帮助到别人。

2020-07-22