- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用
将环境变量 $NODE_ENV 设置为“生产”export NODE_ENV=production
但是当我尝试运行我的 gulp 任务时,它说变量未定义:
if((process.env.NODE_ENV).trim().toLowerCase() !== 'production') {
^
TypeError: Cannot read property 'trim' of undefined
at Object.<anonymous> (/Users/mmarinescu/Projects/gulpTutorial/gulpfile.js:15:26)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Module.require (module.js:366:17)
at require (module.js:385:17)
at Liftoff.handleArguments (/usr/local/lib/node_modules/gulp/bin/gulp.js:116:3)
at Liftoff.<anonymous> (/usr/local/lib/node_modules/gulp/node_modules/liftoff/index.js:192:16)
at module.exports (/usr/local/lib/node_modules/gulp/node_modules/liftoff/node_modules/flagged-respawn/index.js:17:3)
但是,如果我echo $NODE_ENV
,它会显示生产关键字。
本例中我的 gulp 设置如下:
var devBuild = ((process.env.NODE_ENV).trim().toLowerCase() !== 'production')
如果我使用 devBuild 的完整初始化,它总是正确的,因为它不考虑终端中的 $NODE_ENV 更改
var devBuild = ((process.env.NODE_ENV || 'development').trim().toLowerCase() !== 'production')
有谁知道为什么我的 gulpfile 中的变量没有更新以及如何解决这个问题?
在 MAC OSX EL Capitan 上运行
提前致谢!
稍后编辑:
我认为出现错误是因为我正在使用 sudo gulp html;
我使用 sudo 的原因是因为当我使用 gulp html 时,我收到此错误:
gulptutorial 1.0.0, production build
[00:44:21] Using gulpfile ~/Projects/gulpTutorial/gulpfile.js
[00:44:21] Starting 'html'...
[00:44:22] 'html' errored after 101 ms
[00:44:22] Error: EACCES: permission denied, open '/Users/mmarinescu/Projects/gulpTutorial/build/index.html'
at Error (native)
gulp 任务是:
gulp.task('html', function() {
var page = gulp.src(html.in).pipe(preprocess({ context: html.context }));//we add the preprocessed html to a var
if(!devBuild) { //global variable defined on step 7
page = page.pipe(htmlclean());//minifying the html only if we're in the production mode
console.log(devBuild)
}
return page.pipe(gulp.dest(html.out))
})
哪里
html = {
in: source + '*.html',
out: dest,
context: {
devBuild: devBuild
}
};
和
var source = 'source/',
dest = 'build/';
如果我使用 gulp html,变量会更改为生产环境,但出现错误,如果我使用 sudo gulp html,任务会完成,但变量不会更改...
gulpTutorial mmarinescu$ export NODE_ENV=production
gulpTutorial mmarinescu$ gulp html
gulptutorial 1.0.0, production build
[00:58:12] Using gulpfile ~/Projects/gulpTutorial/gulpfile.js
[00:58:12] Starting 'html'...
[00:58:12] 'html' errored after 87 ms
[00:58:12] Error: EACCES: permission denied, open '/Users/mmarinescu/Projects/gulpTutorial/build/index.html'
at Error (native)
对比
gulpTutorial mmarinescu$ sudo gulp html
gulptutorial 1.0.0, development build
[01:02:10] Using gulpfile ~/Projects/gulpTutorial/gulpfile.js
[01:02:10] Starting 'html'...
[01:02:10] Finished 'html' after 67 ms
注意,NODE_ENV 变量在这两种情况下都是生产变量...
谢谢
最佳答案
使用 sudo 时,您将以不同的用户(root)身份运行该进程。这就是环境变量未定义的原因。尝试为您的文件设置正确的权限,您应该能够在没有 sudo 的情况下运行
关于node.js - 导出 NODE_ENV=生产不会更改 gulpfile.js 中的 process.env.NODE_ENV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33947703/
我有 an issue在生产环境中使用 webpack,我对在生产环境中运行 webpack 的不同方式感到困惑(我使用的是 Windows)。 谁能解释一下它们之间的区别: 一:命令行 webpac
我正在尝试使用 将环境变量 $NODE_ENV 设置为“生产” export NODE_ENV=production 但是当我尝试运行我的 gulp 任务时,它说变量未定义: if((process.
正如标题,我使用的是 docker ruby 2.3.5 (ubuntu) 环境,尽管我已经设置了 NODE_ENV=development,当我尝试拦截 process.env.NODE_ENV
我有一个在 Linux 上运行良好的应用程序,但是当我在 Windows 上执行它时出现此错误。 'NODE_ENV' is not recognized as an internal or exte
我想使用 webpack 制作我的应用程序的生产版本: "scripts": { "build": "webpack --mode production", }, 在我的 webpack.
这可能是一个愚蠢的问题,但我在任何地方都找不到直接答案,所以我宁愿问它,也不愿继续有这个疑问。 我正在阅读有关设置 Node 环境的信息。答案this question说我们不应该在 Node 应用程
我在我的 reactjs 解决方案中使用 gulp 并想设置 NODE_ENV,我试过这个: gulp.task('set-dev-node-env', function() { return
Python 中是否有等效的 NODE_ENV? 我想根据执行环境将 JSON 配置动态加载到 python 应用程序。在 nodeJs 中,我通过使用 process.env.NODE_ENV 来做
我正在尝试设置一个标志来通知我的代码是在生产中还是在开发中。到目前为止,我已经看到: 在 VS Code 的 launch.json 中: { "configurations": { "env": "
我正在使用 node.js 进行开发,并希望同时考虑生产和开发环境。我发现在运行 node.js 服务器时设置 NODE_ENV 可以完成这项工作。但是,当我尝试在 package.json 脚本中设
我正在尝试通过更改和测试变量 NODE_ENV 的值来实现我的代码在不同 Node.js 环境中正常工作的测试。 我一直在努力理解为什么下面的代码: process.env.NODE_ENV = un
请,这里的答案都是指一个名为 process.env.NODE_ENV 的东西,但是命令行中的 echo $process.env.NODE_ENV 不起作用。有什么想法吗? 最佳答案 使用 echo
我正在尝试为 Node.js 应用程序设置环境。但我每次都会收到这个错误。 "NODE_ENV" is not recognized as an internal or external comman
如何将 NODE_ENV 作为参数传递给 npm run 命令? 示例 package.json 文件: NODE_ENV=8080 ... "script": { "star
在我的 package.json 中,我有一个 build 脚本集来构建我的下一个项目,如下所示: "build": "echo\"$NODE_ENV\"&& NODE_ENV=$NODE_ENV n
我正在移动我的一些 firebase-queue worker 到 Firebase 函数。我用过 process.env.NODE_ENV根据我运行它们的环境为工作人员设置一些配置。有没有办法设置N
我正在使用 supertest 测试我的 API 我想检查我的 CSRF token 保护是否有效,然后在其他测试中禁用它。 为此,我设置了 NODE_ENV至 test或 not_test app.
这是我的index.js 文件: var express = require('express'); var app = express(); var compression = require('c
我想用 React 和其他代码构建我的 js 代码,并将其缩小到一个文件。 它运行良好,但我得到的是react的开发版本 看起来您正在使用 React 开发版本的缩小副本 现在我知道我需要添加NODE
每次我在配置文件中看到变量 process.env.NODE_ENV 总是困扰我,尤其是 webpack.config.js。我在哪里可以找到这个?因为有时我想将它的值更改为 production 而
我是一名优秀的程序员,十分优秀!