相关疑难解决方法(0)

检测生产与开发在运行时发生反应

是否有可能在运行时检测当前版本的React是开发还是生产?我想做这样的事情:

if (React.isDevelopment) {
  // Development thing
} else {
  // Real thing
}
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

56
推荐指数
4
解决办法
2万
查看次数

NODE_ENV ==='production'之外的缩小代码.这意味着Redux的开发构建速度较慢

所以这是完整的错误: 您当前正在使用NODE_ENV ==='production'之外的缩小代码.这意味着您正在运行较慢的Redux开发版本.

我正在使用第三方图表库CanvasJS,它需要访问全局范围.当我在我的任何模块中导入它时,似乎实际的代码在浏览器中中断(可能是一个this问题).

我通过使用Webpack解决了这个问题,并且使用gulp将bundle.min.js与缩小的Charting库捆绑在一起.

这个工作正常,直到我尝试生产构建.我认为CanvasJS的引用可能在这个过程中被破坏了.

我的Webpack.config文件:

 var debug = process.env.NODE_ENV !== "production";
 var webpack = require('webpack');
 var path = require('path');

 module.exports = {
  context: path.join(__dirname, "public"),
  devtool: debug ? "inline-sourcemap" : null,
  entry: "./js/main.js",
  resolve: {
   alias: {
    'react': 'react-lite',
    'react-dom': 'react-lite'
   }
  }, 
  module: {
  loaders: [
    {
     test: /\.jsx?$/,
     exclude: /(node_modules|bower_components)/,
     loader: 'babel-loader',
     query: {
       presets: ['react', 'es2015', 'stage-0'],
       plugins: [ 'transform-class-properties', 'transform-decorators-legacy'],
     }
   }
 ]
},
output: {
  path: __dirname + "/public/build/", …
Run Code Online (Sandbox Code Playgroud)

reactjs webpack redux

12
推荐指数
1
解决办法
7504
查看次数

您目前正在使用NODE_ENV ==='production'之外的缩小代码.这意味着您正在运行较慢的Redux开发版本

我已经创建了一个基本应用程序并将其部署用于生产.运行webpack -p并启动服务器后,我现在收到此控制台日志错误:

You are currently using minified code outside of NODE_ENV === 'production'. This means that you are running a slower development build of Redux. You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) to ensure you have the correct code for your production build.
Run Code Online (Sandbox Code Playgroud)

这是我的webpack.config.js文件:

module.exports = {
  entry: [
    './src/index.js'
  ],
  output: {
    path: __dirname,
    publicPath: '/',
    filename: 'bundle.js'
  },
  module: {
    loaders: [{
      exclude: /node_modules/,
      loader: 'babel',
      query: {
        presets: ['react', 'es2015', 'stage-1']
      } …
Run Code Online (Sandbox Code Playgroud)

reactjs webpack redux

11
推荐指数
1
解决办法
1万
查看次数

如何在webpack + reactjs中使用环境变量?

我正在使用webpack编译我的Reactjs文件。在我的项目中,我需要对后端进行API调用。

现在我有3个可以本地化,开发和生产的环境。

所以我有一个constants.jsx文件,其中我声明了以下内容:

export const url= 'http://localhost:8002/api/v0';
Run Code Online (Sandbox Code Playgroud)

因此,在我的组件中,我从上方导入url并使用它们来调用APIS,但是我需要如何根据变量是本地变量,dev变量还是prod变量来更改上面的变量。

我该如何实施?

reactjs webpack react-jsx

6
推荐指数
1
解决办法
4613
查看次数

使用环境变量设置基本href

需要<base href=""/>根据构建环境配置设置标记的href值.

例如:

分期应该有 <base href="/staging" />

产品应该有 <base href="/" />

目前的设置:

构建命令:

"build": "sh -ac '. .env.${REACT_APP_ENV}; react-scripts build'",

"build:staging": "REACT_APP_ENV=staging npm run build",

"build:prod": "REACT_APP_ENV=production npm run build",
Run Code Online (Sandbox Code Playgroud)

.env.staging.js:

REACT_APP_BASE_HREF=/staging
Run Code Online (Sandbox Code Playgroud)

index.html的:

....

<base href="" + process.env.REACT_APP_API_URL />

....
Run Code Online (Sandbox Code Playgroud)

这在index.html中似乎不起作用.虽然类似的设置适用于JS文件

(可能是因为JS文件被解析并捆绑到一个文件中,并且捆绑器在那个时间点读取值)

事情尝试:

index.html的:

<base href=process.env.REACT_APP_API_URL />

<base href="process.env.REACT_APP_API_URL" />

<base href="%process.env.REACT_APP_API_URL%" /> (类似于PUBLIC_URL变量)

设置basename属性以及浏览器路由器也无法解决问题

deployment reactjs create-react-app react-router-v4

6
推荐指数
1
解决办法
5323
查看次数

如何在加载时配置 SPA?

我们正在使用 Webpack、React、Node.JS,但我认为这个问题比特定技术更通用。在为开发模式或生产模式(例如,使用 DefinePlugin)构建时,我可以使用 Webpack 来配置 SPA。

如何在生产模式下(在构建时配置)为不同的部署环境(例如登台与生产)配置 SPA?例如,这些不同的部署将与不同的后端服务器 API 通信。

SPA 必须以某种方式从服务器获取一些本地上下文,因为它正在被浏览器获取。或者也许我们必须在 SPA 可以安全获取的每个服务器上都有一个自定义配置文件?

我们在服务器上使用 NodeJS,这个 SPA 最终将作为同构应用程序运行,所以这可能会有所帮助。我们在 Docker 镜像中部署这些应用程序,在部署时很容易配置它们的环境。

感谢您的任何建议。

configuration node.js singlepage single-page-application

5
推荐指数
1
解决办法
1968
查看次数

如何从 webpack.config.js 文件访问环境变量?

我尝试通过 process.env.env_name 从 webpack.config.js 访问环境变量,\虽然我可以通过 webpack.config.js 中的 process.env.env_name 访问 .env(本地)中的环境变量,但我可以无法访问 config/default.js 文件中声明的环境变量。任何想法?\xe2\x80\x93

\n

javascript node.js webpack

5
推荐指数
2
解决办法
9943
查看次数

webpack - 定义插件方法

在 webpack 插件的定义中,我试图提供一个覆盖函数,如果该方法存在,我的模块将选取该函数。

export const listFetchAPI = () => {
  return ( LIST_FETCH_API ? LIST_FETCH_API : '/list/');
};
export const listFetchTX = (data) => {
  return ( LIST_FETCH_TX === 'function' ? LIST_FETCH_TX(data) : data );
};
Run Code Online (Sandbox Code Playgroud)

在我的 webpack 配置中,基于项目的环境或实现,我可能想也可能不想为这些功能提供覆盖。

webpackConfig.plugins.push(
  new webpack.DefinePlugin({
    LIST_FETCH_API: JSON.stringify('https://testapi.com/listFetch/')
    LIST_FETCH_TX(data) { return { ...data, test: 'HELLO!' }; }
  })
);  
Run Code Online (Sandbox Code Playgroud)

我已经尝试过 ES5 和 ES6 表示法。当我构建时,我收到一个错误SyntaxError: Unexpected identifier

我在文档中没有看到您可以通过 DefinePlugin 传递方法。https://webpack.js.org/plugins/define-plugin/

谷歌搜索出现零。我的下一步是传递一个字符串值,然后使用它react-json-schema来获取组件。这似乎太复杂了,所以我希望有一种方法可以在DefinePlugin.

编辑 为了澄清起见,我正在做的是构建一个可以注册到私有 npm 注册表的通用 redux 模块。调用时,可以为该模块提供 API url …

webpack

2
推荐指数
1
解决办法
5935
查看次数