Javascript 无法读取属性';使用_env_变量';未定义的
我正在学习使用数据库迁移。这个很好用 作为下一步,我希望能够运行测试。我的测试非常简单(没有使用任何与Sequelize相关的东西),看起来像Javascript 无法读取属性';使用_env_变量';未定义的,javascript,node.js,express,testing,jestjs,Javascript,Node.js,Express,Testing,Jestjs,我正在学习使用数据库迁移。这个很好用 作为下一步,我希望能够运行测试。我的测试非常简单(没有使用任何与Sequelize相关的东西),看起来像 import request from 'supertest'; import app from '../src/app.js'; describe('GET /', () => { it('should render properly', async () => { await request(app).get('/').ex
import request from 'supertest';
import app from '../src/app.js';
describe('GET /', () => {
it('should render properly', async () => {
await request(app).get('/').expect(200);
});
});
describe('GET /404', () => {
it('should return 404 for non-existent URLs', async () => {
await request(app).get('/404').expect(404);
await request(app).get('/notfound').expect(404);
});
});
当我以npm测试的方式运行这个测试时,我得到的错误是
➜ contactz git:(master) ✗ npm test
> express-babel@1.0.0 test /Users/harit/bl/sources/webs/q2/contactz
> jest
FAIL test/routes.test.js
● Test suite failed to run
TypeError: Cannot read property 'use_env_variable' of undefined
at Object.<anonymous> (db/models/index.js:11:11)
at Object.<anonymous> (src/routes.js:3:14)
at Object.<anonymous> (src/app.js:4:15)
at Object.<anonymous> (test/routes.test.js:2:12)
at Generator.next (<anonymous>)
at Promise (<anonymous>)
Test Suites: 1 failed, 1 total
Tests: 0 total
Snapshots: 0 total
Time: 0.702s
Ran all test suites.
npm ERR! Test failed. See above for more details.
➜ contactz git:(master) ✗
➜ contactz git:(主控)✗ npm试验
>快车-babel@1.0.0test/Users/harit/bl/sources/webs/q2/contactz
>开玩笑
失败测试/routes.test.js
● 测试套件无法运行
TypeError:无法读取未定义的属性“use\u env\u variable”
反对
有人能帮我知道出了什么问题以及如何修复吗?你能试试这个命令而不是npm测试吗?
jest yourfile.js--env=node--runInBand我只是使用了javascript trim()
- 以前
- 之后
这是我的我是服务器方面的新手,特别是heroku+node express+sequelize。所以在我的例子中,我在Heroku设置上的配置变量是错误的
NODE_ENV
被设置为错误的值,如live
,而不是production
假设您也在使用Sequelize,则正确的值production
必须等于您的config.js
。我今天收到了这个错误并修复了它
在运行jest时,默认情况下,它会将节点_ENV(process.ENV.NODE_ENV)设置为“test”
如果使用sequelize cli生成基本sequelize文件,那么在sequelize config.json文件中(默认情况下)应该使用三种类型的配置选项,即:“开发”、“测试”和“生产”。
然而,我看到您正在使用自己的config.js文件,并且没有“测试”选项,只有开发和生产
当model/index.js文件正在查找所述的“test”选项,但发现它未定义时,您将收到此错误。具体地说,在它的第12行,将发现配置为未定义,并抛出错误,查找未定义的use_env_variable属性
解决方案是将“test”配置添加到config.js文件中。只要复制用于开发的配置,它就会运行
*请注意,您可能应该为每种不同类型的配置设置不同的db,但这是另一个主题。可能存在导入或路径问题
process.env.NODE_ENV() // return "development " with space
process.env.NODE_ENV.**trim()** // "development" no space